poj 2485 Highways
来源:互联网 发布:天刀捏脸数据男五毒 编辑:程序博客网 时间:2024/06/11 19:25
最小生成树的应用,之前用过prim算法实现,现在用kruskal算法实现,用并查集;
开始的时候一直runtime error,是数组开的小的原因
AC代码如下:
#include <iostream>#include <cstdlib>#include <cstdio>#include <string>using namespace std;#define maxn (500+500)typedef struct node{int start;int end;int value;}node;node data[maxn*maxn];int father[maxn];int nodes;int cmp(const void* a,const void* b){node * aa = (node *)a;node * bb = (node *)b;return aa->value - bb->value;}int find(int x){if(x != father[x])father[x] = find(father[x]);return father[x];}int kruskal(int start,int count){qsort(data,count,sizeof(node),cmp);int ans = 0;for(int i=1;i<=nodes;i++)father[i] = i;int cnt = 0;for(int i =0;i<count;i++){int xx= find(data[i].start);int yy = find(data[i].end);if(xx == yy) continue;father[yy] = xx;if(data[i].value >ans)ans = data[i].value;cnt++;if(cnt == nodes-1)return ans;}return ans;}int main(){int cases;cin>>cases;while(cases--){memset(data,0,sizeof(data));memset(father,0,sizeof(father));cin>>nodes;int count=0;for(int i=1;i<=nodes;i++)for(int j=1;j<=nodes;j++){int weight;scanf("%d",&weight);if(i == j)continue;node t;t.start = i;t.end = j;t.value = weight;data[count] = t;count++;}cout<<kruskal(1,count)<<endl;}return 0;}
- poj poj 2485 Highways
- POJ 2485 Highways
- poj 2485 Highways
- POJ-2485 highways
- POJ 2485 Highways Kruskal
- poj 2485 Highways
- Poj 2485 Highways
- POJ 2485 Highways
- poj 2485 Highways
- poj 2485 Highways
- POJ 2485 Highways
- POJ 2485 Highways
- POJ 2485 Highways
- POJ 2485 Highways
- Poj 2485 Highways
- poj 2485 Highways
- poj 2485 highways
- POJ 2485 Highways
- Qt-4.7.2及QtEmbedded-4.7.2 在ubuntu 11.10下的安装
- 数据挖掘十大经典算法 <一> :Adaboost算法
- Qt中创建菜单和工具栏的一点总结
- Objective-c 和 Mac操作系统
- linux 发无线 软AP hostapd+dnsmasq
- poj 2485 Highways
- 红外遥控解码驱动代码
- Spring MVC 教程,快速入门,深入分析
- SEO学习(五)——关键词的研究
- Ubuntu12.04下使用doxygen生成API文档
- Oracle DBA 每天、每周、每月应该做的工作
- GC.Collect
- CAN驱动代码
- javascript 中 tagName 和 nodeName 的区别