HUD 1233 还是畅通工程
来源:互联网 发布:华讯网络待遇怎么样 编辑:程序博客网 时间:2024/05/16 14:09
思想:简单最小生成树,kruskal。
#include<stdio.h>#include<algorithm>#include<iostream>#include<math.h>#include<string.h>#include<string>using namespace std;int per[105];int m;void init(){ for(int i = 0; i < 105; i ++) { per[i] = i; }}struct Edge{ int x; int y; int dis;}edge[5005];bool cmp(Edge a, Edge b){ return a.dis < b.dis;}int find(int x){ int r = x; while(r != per[r]) r = per[r]; int i = x; int j; while(i != r) { j = per[i]; per[i] = r; i = j; } return r;}void join(int x, int y){ int s = find(x); int e = find(y); if(s != e) { per[s] = e; }}int kruskal(int c){ sort(edge+1,edge+c+1,cmp); int sum = 0,cnt = 0; for(int i = 1; i <= c; i ++) { int s = find(edge[i].x); int e = find(edge[i].y); if(s != e) { join(s,e); sum += edge[i].dis; cnt++; } if(cnt == m-1) break; } if(cnt < m-1) return -1; return sum;}int main(){ int n,a,b; while(scanf("%d%d",&n,&m)!= EOF && n) { init(); int c = 0; for(int i = 1; i <= n; i ++) { scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].dis); } int d = kruskal(n); if(d == -1) { printf("?\n"); continue; } printf("%d\n",d); } return 0;}
如有错误,欢迎指出~
1 0
- HUD 1233 还是畅通工程
- hud 1233 还是畅通工程_kruskal算法
- Hud 1233 还是畅通工程[最小生成树Prim]
- [ACM] hud 还是畅通工程(重写)
- HUD OJ 1232 畅通工程 和 HDU OJ 1233还是畅通工程【并查集和克鲁斯卡尔算法】
- hud 1233 还是畅通工程( kruskal和prim两种方法)
- hdu 1233 还是畅通工程
- HDOJ 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDOJ 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDOJ 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- Leetcode/array/Container With Most Water
- 单例模式-懒汉式
- Numpy多维数组保存文档时,解决报错TypeError: Mismatch 的方法
- springmvc快速入门
- 程序员面试经典--删除结点(仅能访问该结点)
- HUD 1233 还是畅通工程
- 封装一个简单的PHP连接MongoDB类
- Python 之生成器和迭代器
- A complete guide to using Keras as part of a TensorFlow workflow: tutorial
- 京东笔试之异或运算符
- MySQL系列之六:存储引擎
- Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0' or one of its dependencies
- LCNN论文阅读笔记
- SAP HANA SQL/MDX及TCP/IP端口介绍