首页 > 代码库 > hdu 1233 还是畅通工程
hdu 1233 还是畅通工程
题目:
链接:点击打开链接
题目:
中文
思路:
算法:
最小生成树,wa...................wa了好多次,就因为我的边序号原来是从0........m,悲催了...............................
代码
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 5050 int ans,n,m; int root[MAXN]; int u[MAXN],v[MAXN],w[MAXN]; int r[MAXN]; int cmp(const int i,const int j) { return w[i] < w[j]; } int find(int x) { return root[x] == x ? x : root[x] = find(root[x]); } void kruskal() { ans = 0; for(int i=1; i<=n; i++) root[i] = i; for(int i=1; i<=m; i++) r[i] = i; sort(r+1,r+m+1,cmp); for(int i=1; i<=m; i++) { int e = r[i]; int x = find(u[e]); int y = find(v[e]); if(x != y) { ans += w[e]; root[x] = y; } } printf("%d\n",ans); } int main() { //freopen("input.txt","r",stdin); while(scanf("%d",&n) != EOF && n) { m = n*(n-1)/2; for(int i=1; i<=m; i++) { scanf("%d%d%d",&u[i],&v[i],&w[i]); } kruskal(); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。