NYOJ 502筹建工程
2013-04-25 20:54
141 查看
题目链接:here~~
#include <iostream> #include <algorithm> #include <queue> #include <cstdio> #include <string.h> using namespace std; struct ue { int x, y, w; bool operator < (ue a)const { return w>a.w; } }; priority_queue<ue> p; int f[101]; int find(int x){return f[x]==x?x:f[x]=find(f[x]);} int main() { int N, n, m, i, j; ue a, b; // freopen("in.txt", "r", stdin); cin>>N; while (N--) { while (!p.empty()) p.pop(); for (i=0;i<101;i++) f[i]=i; cin>>n>>m; for (i=0; i<n; i++) { cin>>a.x>>a.y>>a.w; if (a.x==a.y) continue; p.push(a); } if (n<m-1) {printf("No solution\n");continue;} int k=1, res=0; while (k<m) { b=p.top(); int c=find(b.x), d=find(b.y);//找到b.x的根和b.y的根 if (c!=d){res+=b.w;f[b.y]=b.x;}//如果不相等,说明两个点不属于同一个连通,所以加上这条边的权值,并让两个点相连 p.pop();//删除当前操作的边 k++;//找到m-1个边后跳出循环,m-1是最少需要的边数 } cout<<res<<endl; } return 0; }
相关文章推荐
- nyoj 502 筹建工程【最小生成树】
- NYOJ 502 筹建工程 避圈法 并查集
- nyoj 502 筹建工程 【迪杰斯特拉】
- nyoj-502-筹建工程
- nyoj 502 筹建工程
- NYOJ 502 筹建工程
- NYOJ筹建工程之并查集and最小生成树prim算法
- NYOJ502-筹建问题
- 南阳502 筹建工程
- nyoj 608 畅通工程 【迪杰斯特拉】
- NYOJ 608 508筹划工程&& HDU 1232 畅通工程
- nyoj 工程---229
- 并查集解析[以 NYoj&&Hud 畅通工程 为例]
- NYOJ 引水工程
- NYOJ-1239-引水工程
- NYOJ 608 畅通工程 并查集
- NYOJ 1239 引水工程 【MST 变形】
- nyoj-229工程[dp+二分]
- nyoj 1239 引水工程 河南省ACM2015年省赛D 题
- nyoj 1239 引水工程 (河南省第八届acm程序设计大赛)