poj1258Agri-Net
来源:互联网 发布:js加载乱码 编辑:程序博客网 时间:2024/05/16 06:12
题目连接:http://poj.org/problem?id=1258
刚看到题目时感觉数据不好处理,后来发现把数据变化一下比较容易处理的方式,就是把个点和边长用结构
体表示,在用kruskal就OK了,就那么简单。
代码:
#include<stdio.h>#include <iostream>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>#include<list>#include<vector>#pragma comment(linker,"/STACK:102400000,102400000")using namespace std;#define MAX 100010int father[MAX];struct node{ int x; int y; int w;}edge[MAX];bool cmp(node o1,node o2){ return o1.w<o2.w;}int Find_Set(int x){ if(x!=father[x]) { father[x]=Find_Set(father[x]); } return father[x];}int kruskal(int n){ int sum=0; int i,fx,fy; for(i=0;i<n;i++) { int fx=Find_Set(edge[i].x); int fy=Find_Set(edge[i].y); if(fx!=fy) { father[fx]=fy; sum+=edge[i].w; } } return sum;}int main(){ int i,j,n,a[110][110]; while(scanf("%d",&n)!=EOF) { int k=0; for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&a[i][j]); if(i<j) { edge[k].x=i; edge[k].y=j; edge[k].w=a[i][j]; k++; } } } for(i=0;i<n;i++) father[i]=i; sort(edge,edge+k,cmp); printf("%d\n",kruskal(k)); } return 0;}
- POJ1258Agri-Net
- poj1258Agri-Net
- poj1258Agri-Net
- poj1258Agri-Net
- poj1258Agri-Net
- poj1258Agri-Net
- poj1258Agri Net Kruskal+prim
- POJ1258Agri-Net (最小生成树之prim)
- poj1258Agri-Net 最小生成树prim
- poj1258Agri-Net(最小生成树)
- .NET
- .net
- .net
- .NET
- .net
- .NET
- .net
- .net
- 学生信息管理系统总结
- 【ACMclub周赛5】Problem A——购物停车
- Wikioi 天梯 1501/1842/3038/3143/3145
- 同步时序逻辑电路和异步时序逻辑电路
- Android Http连接和TCP连接的区别
- poj1258Agri-Net
- C++数据结构--背包问题
- android中Http和Socket连接的区别?
- 703n的OpenWrt配置四:把路由器变成下载机
- 跟着老白学ORACLE (1) 1月1日 学习一下表的基础知识
- 断言定义与使用
- Mybatis API 使用指南
- 【ACMclub周赛5】Problem C——求两圆的交叉面积
- 深度学习大牛andrew.Ng DeepLearning