A
来源:互联网 发布:知乎 多功能料理机 编辑:程序博客网 时间:2024/05/22 06:29
点击打开链接
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
当N为0时,输入结束,该用例不被处理。
31 2 11 3 22 3 441 2 11 3 41 4 12 3 32 4 23 4 50
35 Huge input, scanf is recommended.
两个代码有区别吗?为什么第一个能过第二个不能过?
Select Code
#include<iostream> #include<algorithm> using namespace std; const int maxn=10005; struct node { int from,to,len;} edge[maxn];//储存边的数据结构 int n,fa[maxn],m,ans,q; bool cmp(node a,node b) { return a.len<b.len; }//边按从小到大的顺序排列 int Find(int x) { if(fa[x]==x) return x; return fa[x]=Find(fa[x]); } void Merge(int x,int y) { x=Find(x),y=Find(y); if(x!=y) fa[y]=x; } int kruskal() { sort(edge,edge+m,cmp);//边排序 for(int i=0;i<=n;i++) fa[i]=i;//初始化并查集 ans=0; for(int i=0;i<m;i++)//一条边的两个端点不在同一个集合,则选它,并合并端点 if(Find(edge[i].from)!=Find(edge[i].to)) Merge(edge[i].from,edge[i].to),ans+=edge[i].len; return ans; } int main() { while(cin>>n,n) { m=n*(n-1)/2; for(int i=0;i<m;i++) cin>>edge[i].from>>edge[i].to>>edge[i].len; cout<<kruskal()<<endl; } return 0; }
#include <stdio.h>#include <iostream>#include <algorithm>using namespace std;const int maxn=10005;struct node //结构体 {int from,to,len;}edge[maxn];int n,fa[maxn],m,ans,q;bool cmp(node a,node b){return a.len<b.len;}int Find(int x){if(fa[x]==x)return x;return fa[x]=Find(fa[x]);}void Merge(int x,int y){x=Find(x),y=Find(y);if(x!=y)fa[y]=x;}int Kruskal()//最小生成树 {sort(edge,edge+m,cmp);//从小到大不是sort的默认的排序方法吗? (结构体?) for(int i=0;i<n;i++)//初始化 fa[i]=i;ans=0;for(int i=0; i<m ;i++)if(Find(edge[i].from)!=Find(edge[i].to))//连接 避免成环 {Merge(edge[i].from,edge[i].to);ans+=edge[i].len;//计数 }return ans;}int main(){while(cin>>n,n){m=n*(n-1)/2;for(int i=0 ; i<m ; i++)cin>>edge[i].from>>edge[i].to>>edge[i].len;cout<<Kruskal()<<endl;}return 0;}
阅读全文
0 0
- a
- a
- a
- a
- a
- a
- a
- a
- a
- a
- a
- a
- a
- A
- A*
- a
- A
- a
- 【干货合集】阿里云专家诠释持续集成与云端交付的正确姿势:在云上如何欢快的用好容器服务?
- Maven多模块工程搭建
- 【清明】最小生成树
- Java实现AD 部门和员工的增删改查
- 一些常见的状态码
- A
- activity四种启动模式讲解
- spark1.6使用介绍
- 前阿里高管“下海”创业,做了一只全球卖断货的“水杯”
- 关于对LIR系统中不规则表格的整理算法研究
- (2)2017.8.3下,java小程序的实践
- JavaScript概览
- C/C++常见笔试面试题(二)——软件特性、fseek()函数、逗号运算符、左值和右值
- 【Selenium】15执行JS,判断元素点击,添加删除元素