1090: 最小生成树(模版 kruskal算法 )
来源:互联网 发布:上市公司数据在哪里查 编辑:程序博客网 时间:2024/05/31 19:48
1090: [视频]最小生成树(模版 kruskal算法 元问题by scy)
时间限制: 1 Sec 内存限制: 128 MB
提交: 313 解决: 97
[提交][状态][讨论版]
题目描述
【题目描述】
一个有n个点的连通无向图,有m条无向边,每条边有一个长度c,
如果连接所有点,只需要从m条无向边中选n-1条,为什么?
现在要求这n-1条边的长度和最小。
以上就是最小生成树的概念。
【输入格式】
第一行输入 n和 m (1<=n<=1000,n-1<=m<=50 0000)
下来 N 行,每行三个数 x,y,c,表示点 x 和 点 y 有一条距离为 c 的无向边。0
#include<iostream>#include<algorithm>using namespace std;struct node{int x,y,len;};struct node N[500005];int father[1100];int n,m;bool cmp(struct node a,struct node b){ return a.len<b.len;}int find_father(int x){ if (father[x]==x) return x; else { father[x]=find_father(father[x]); return father[x]; }}int main(){ int sum_len=0,total=0; cin>>n>>m; for (int i=1;i<=m;i++) { cin>>N[i].x>>N[i].y>>N[i].len; } sort(N+1,N+m+1,cmp); for (int i=0;i<=n;i++) father[i]=i; for (int i=1;i<m;i++) { int fx=find_father(N[i].x); int fy=find_father(N[i].y); if (fx!=fy) { sum_len+=N[i].len; father[fx]=fy; total++; if (total==n-1) break; } } cout<<sum_len<<endl; return 0;}
阅读全文
0 0
- 1090: 最小生成树(模版 kruskal算法 )
- 最小生成树kruskal模版
- 最小生成树MST(Prim/Kruskal模版)
- 最小生成树 kruskal的代码模版
- 最小生成树算法(prim&kruskal)
- poj1251最小生成树(kruskal算法)
- 最小生成树 kruskal(算法)
- 最小生成树(Kruskal算法)--poj2421
- 最小生成树(kruskal算法)
- 最小生成树(Kruskal算法)
- Kruskal算法(求最小生成树)
- 最小生成树2(Kruskal算法)
- 最小生成树算法(2)------------Kruskal
- Kruskal 算法(最小生成树)
- 最小生成树算法[Prime/(Kruskal)]
- 最小生成树(二)...Kruskal算法
- kruskal最小生成树(MST)算法
- 最小生成树(kruskal算法)
- c#限制输入数字和小数点
- Recovery启动流程(3)--recovery.cpp分析
- 【leetcode】479. Largest Palindrome Product(Python & C++)
- 51Nod 1240:莫比乌斯函数
- Android进阶之路
- 1090: 最小生成树(模版 kruskal算法 )
- How I Mathematician Wonder What You Are! POJ
- C语言再学习-- 大端小端详解(转)
- 网络爬虫之东方财富网股票板块
- HTTP协议的基本概念和方法
- MySQL-按月分组查询
- Jquery总结
- 【第四周项目3】单链表应用(三)
- 电脑里那个自带的游戏老是无响应,或者打开很慢是怎么了