哎呀最小生成樹呀··哎呀mst啊··糾結了我快一星期=.= 。kruskal 和 prim想著都還行,但**實現起來,就是各種錯啊。。。
下面是kruskal的方法,比較有代表性意義,加上注釋~~
#include #include #include #include #include using namespace std;
int n,m,p,par[150];
struct vil
edge[150];
void input()
}int cmp(const void *a,const void *b)
int findset(int x)
return x;
}void kruskal()
for ( i = 0; i < n; i++ ) }
if (c==m-1) // m-1條邊的時候為滿足要求
else }
int main()
else
}return 0;
}
hdu 1863 最小生成樹
使用並查集,陣列不要太小 include stdio.h int set 200 int n,m typedef struct nodenode,pnode node road 200 void init int find int u return set u int join int u,int ...
hdu 1863(最小生成樹)
基礎的最小生成樹問題,不過 要特判條件不足的情況 include include define inf 1 30 int n,m,vis 110 low 110 int map 110 110 int init int prim if pos 1 return 1 代表這當前步驟缺少條件 int k...
HDU 1863 最小生成樹
這還是最小生成樹的模版題,以前都是用的kruskal做的,這次用prime做的,寫篇部落格記錄下。prime的複雜度為n 2 n為點的個數 與邊的個數無關,用於稠密圖,而kruskal的複雜度為mlgm m為邊的個數 與點的個數無關,主要用於稀疏圖。include include includeus...