【題目地址】
http://acm.pku.edu.cn/JudgeOnline/problem?id=1679
【題目大意】
給定帶權無向圖,求最小生成樹是否唯一,若唯一,輸出最小權和;否則,輸出"Not Unique!".
【解題思路】
求最小生成樹權值和MST1,次小生成樹MST2,判斷MST1==?MST2即可。
次小生成樹可有最小生成樹換一條邊得到。時間複雜度V^2。
step 1
先用prim求出最小生成樹T。在prim的同時,用一個矩陣max[u][v]記錄在T中連接任意兩點u,v的唯一的路中權值最大的那條邊的權值。(注意這裏)。這是很容易做到的,因爲prim是每次增加一個結點s,而設已經標號了的結點集合爲w,則w中所有點結點到s的路中的最大權值的邊就是當前加入的這條邊。step 1用時O(V^2)。
step 2
枚舉所有不再T的邊u_v,加入邊u_v替換權威max[u][v]的邊,不斷更新求最小值,即次小生成樹。step 2用時O(E)。故總時間O(V^2).
【代碼】