hdu1863 kruskal(最小生成树)
来源:互联网 发布:网络电影分账截图 编辑:程序博客网 时间:2024/06/05 14:12
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;const int NM=110;int parent[NM];int N,M;struct Edge{ int u; int v; int w;}edge[NM];bool cmp(Edge a,Edge b){ return a.w<b.w;}void init(){ for(int i=1;i<=M;i++) parent[i]=i;} int find(int x){ if(x!=parent[x]) return find(parent[x]); return x;}void Union(int x,int y){ int xx=find(x); int yy=find(y); if(xx!=yy) { parent[xx]=yy; }}int kruskal(){ int sum=0,uu,vv,up,vp,count=0; sort(edge,edge+N,cmp); //cout<<"M="<<M<<endl; for(int i=0;i<N;i++) { uu=find(edge[i].u); vv=find(edge[i].v); // cout<<"uu="<<uu<<" "<<"vv="<<vv<<endl; if(uu!=vv) { Union(uu,vv); count++; sum+=edge[i].w; } if(count>=M-1) break; } // cout<<"count="<<count<<endl; if(count>=M-1) return sum; else return -1; }int main(){ int s; while(cin>>N>>M&&N) { init(); for(int i=0;i<N;i++) { scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w); } s=kruskal(); if(s==-1) printf("?\n"); else printf("%d\n",s); } system("pause"); return 0;}
- hdu1863 kruskal(最小生成树)
- 最小生成树 Kruskal hdu1863 畅通工程
- hdu1863(kruskal求最小生成树)
- HDU1863(最小生成树)
- HDU1863(最小生成树)
- hdu1863 (最小生成树)
- Kruskal & Prim 最小生成树HDU1863 畅通工程
- hdu1863畅通工程 最小生成树 Kruskal算法
- hdu1863 畅通工程 Kruskal 和 Prime求最小生成树
- HDU1863:畅通工程2(最小生成树Kruskal算法与Prim算法)
- HDU1863(最小生成树)
- HDU1863最小生成树
- HDU1863---最小生成树(prim算法)
- hdu1863 畅通工程(最小生成树)
- hdu1863畅通工程(最小生成树)
- HDU1863畅通工程(最小生成树)
- hdu1863(最小生成树--Prim算法)
- 【HDU1863】畅通工程(最小生成树)
- 二叉树的非递归遍历
- 视图生命周期与视图控制器关系
- POJ 1011 木棍问题
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值
- 机器学习理论与实战(十三)概率图模型01
- hdu1863 kruskal(最小生成树)
- 考虑不确定性和风险的工具和技术有
- C++中引用传递与指针传递区别(进一步整理)
- Eclipse 创建新文件时自动添加author,email,time等信息
- shell 编程学习笔记(一)
- spring中注解的实现原理
- cocos2d-x 学习日志(4)之cocos2d-x集成sharesdk
- Android SDK Manager无法更新的解决
- JQuery分别取得每行最后一列和最后一行