學完kruskal演算法,自己的理解就是也是乙個貪心的策略,記錄下每次的起點和終點,以及他們之間的權值,對邊的權值進行排序,每次找出權值比較小的邊,判斷他與之前所選擇的邊是否會形成迴路,如果不會的話就往生成樹中加入這一條邊,如果會就捨棄,如何判斷迴路,就需要用到並查集,找出起點和終點各自的根節點,如果不相同說明是在兩個不同的集合之中,(也就意味著不會產生迴路)這時候將兩個集合合併,並加上這一條邊的權值,如果相同就會有迴路產生。
附上**:
#include #include #include #include using namespace std;
#define m 110000
int u[m];
int v[m];
int w[m];
int p[m];
int r[m];
int n,m;
int ans;
int cmp(int i,int j)
{ return w[i]
HDU1233 還是暢通工程 最小生成樹
題意 求出連線各個村莊最小的公路總長度,把最小公路總長度求出來。思路 最小生成樹原理,帶入資料求得。prim include include using namespace std define inf 0x3f3f3f3f intmain visit 1 1 int pos 1 第一次給low賦值...
HDU1233 還是暢通工程(最小生成樹)
problem description 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。input 測試輸入包含若干...
hdu 1233還是暢通工程(最小生成樹 並查集)
這題主要是考察最小生成樹把,在順便在連通性上用到了並查集,我是用結構體來存圖,然後在把路徑長度排序,然後遍歷結構體,如果沒有連通,那麼通過並查集來連通,然後加上長度。include include include using namespace std struct haha struct haha...