和前幾個最小生成樹有點不一樣的地方就是:
在kruskal裡面,要先把已經修通的路排在前面(不知道這樣是不是多此一舉呢),再按照每條路的價值從小到大排序
自定義排序規則就是(呼叫c++的sort):
int cmp(const e a,const e b)
將每條邊存在結構體edge裡面
struct e
edge[maxn];
主程式:
/** author: 風凌月影
* school: hziee
* time : 2005-06-02-02.42
*/#include #include #include using namespace std;
const int maxn= 5005;
int n,m;
int fa[105];
struct e
edge[maxn];
int cmp(const e a,const e b)
int findx(int x)
int kruskal()
{int ans=0;
for(int i=0;i<=n;i++)
fa[i]=i;
sort(edge,edge+m,cmp);
for(int i=0;i
繼續暢通工程 hdu 1879
include 2243673 2010 03 24 20 56 41 accepted 1879 375ms 320k 1070 b c 悔惜晟 include 修改了三次終於ac,為何就是 的效率不高 include include using namespace std int s 4991 ...
hdu 1879 繼續暢通工程
include include include typedef structedge edge input 5050 int cost 5050 int parent 5050 int cmp const void a,const void b int root int n int kruskal ...
hdu 1879 繼續暢通工程
簡單思路 補了一道好久之前的題,最小生成樹,只不過這道題裡面可能有已經連好的一部分邊,將這些邊的權值設為0即可,因為本來就已經連好,不需要任何花費。然後就是kruskal求mst就好了。include include include include define loop i,n for int i...