HDU 1879 繼續暢通工程

2021-06-27 12:55:04 字數 710 閱讀 2606

和前幾個最小生成樹有點不一樣的地方就是:

在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...