poj 2421
来源:互联网 发布:淘宝怎么给五星好评 编辑:程序博客网 时间:2024/04/29 11:32
kruskal算法:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>const int maxn = 110;using namespace std;int rt[maxn];struct edge{ int l,r,w;}ee[maxn*maxn];int map[maxn][maxn],flag[maxn][maxn];int nedge;//路的条数bool Cmp(edge x, edge y){ return x.w < y.w; }void Build(int n){ for(int i = 1; i <= n; ++i) rt[i] = i;}int Find(int x){ if(rt[x] == x) return x; return Find(rt[x]);}void Union(int x, int y){ int xrt = rt[x]; int yrt = rt[y]; if(xrt != yrt) rt[xrt] = yrt;}int Kruskal(){ int rt1,rt2,ans=0; for(int i = 0; i < nedge; ++i){ rt1 = Find(ee[i].l); rt2 = Find(ee[i].r); if(rt1 != rt2){ ans += ee[i].w; Union(rt1,rt2); } } return ans;}int main(){ int n; while(~scanf("%d",&n)){ Build(n); for(int i = 1; i <= n; ++i) for(int j = 1; j <= n ; ++j) scanf("%d",&map[i][j]); nedge = 0; for(int i = 1; i < n; ++i) for(int j = i+1; j <= n; ++j){ ee[nedge].l = i; ee[nedge].r = j; ee[nedge].w = map[i][j]; nedge++; } int m; scanf("%d",&m); while(m--){ int a,b; scanf("%d %d",&a,&b); int rt1 = Find(a); int rt2 = Find(b); Union(rt1,rt2); } sort(ee,ee+nedge,Cmp); printf("%d\n",Kruskal()); } return 0;}
- POJ 2421
- poj 2421
- POJ 2421
- poj 2421
- POJ 2421
- POJ 2421
- poj 2421
- POJ 2421
- poj 2421
- POJ 2421Constructing Roads
- poj 2421 Constructing Roads
- poj 2421 Constructing Roads
- poj 2421(prime)
- POJ 2421 Constructing Roads
- POJ 2421 Constructing Roads
- POJ 2421 constructing roads
- POJ-2421-Constructing Roads
- POJ 2421 Constructing Roads
- Flex索引数组
- shh整合后web.xml、spring配置文件和struts.xml的内容
- note : 使用宏简化代码的输入
- 内核通知链机制的原理及实现
- 冒泡排序
- poj 2421
- Android系统信息获取 之十一:获取IMEI,IMSI号
- libcurl多线程超时设置不安全
- css简介(二)property
- 求两个数的最大值
- Java 自动装箱与拆箱
- 学习spring之一
- Struts2:action与action间的属性/参数传递
- excel中两列数的对比