最小生成树 poj 1258
2015-07-31 20:06
288 查看
这题很裸,没啥意思,就是今晚被保安吓到了,想来找找水题切切,刚好后面习题还没写。。。刚好写个kruskal压压惊吧。。
[code]#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; #define M 10900 //100*99/2 typedef long long ll; typedef struct { int from; int to; int weight; }edge; edge e[M]; int n,k; int p[M]; bool cmp(edge a ,edge b) { return a.weight < b.weight; } int find(int x) { return x==p[x]?x:p[x] = find(p[x]); } ll kruskal() { for(int i = 0;i < n;i++) p[i] = i; ll ans = 0; for(int i = 0;i < k;i++) { int x = find(e[i].from); int y = find(e[i].to); if(x != y) { p[x] = y; ans += (ll)e[i].weight; } } return ans; } int main() { while(scanf("%d",&n)==1) { k = 0; for(int i = 0;i < n;i++) { for(int j = 0;j < n;j++) { int temp; scanf("%d",&temp); if(j > i) { e[k].from = i; e[k].to = j; e[k++].weight = temp; } } } sort(e,e+k,cmp); printf("%lld\n",kruskal()); } return 0; }
相关文章推荐
- HDU 5327 Olympiad (2015 Multi-University Training Contest 4 2015多校联合)
- 匿名内部类中this的使用问题
- 七夕祝福语大全
- 七夕祝福语大全
- ios tableView cell分割线顶到头处理
- 函数的复写
- Java虚拟机七种垃圾收集器比较
- Circular dependencies cannot exist in RelativeLayout
- 随机产生10个2位正整数 然后排序
- 关于2G以上文本文件的MYSQL数据导入 mysql
- hdu 1789 Doing Homework again
- UVA120 - Stacks of Flapjacks
- MSSQL—字符串分离(Split函数)
- 判断格式是否为邮箱
- visual studio 2013中常用的快捷键
- ffmpeg新旧接口,新旧函数替换
- 剑指Offer面试题12(Java版):打印1到最大的n位数
- linux如何设置静态ip
- hdu1166_敌兵布阵(线段树入门)
- 输入一句话 计算输出的长度