九度oj 题目1017:还是畅通工程 【ZJU2006考研机试题3】
2014-03-02 09:54
225 查看
题目1017:还是畅通工程
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2113
解决:1070
题目描述:
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
输入:
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
输出:
对每个测试用例,在1行里输出最小的公路总长度。
样例输入:
样例输出:
来源:2006年浙江大学计算机及软件工程研究生机试真题
答疑:解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7741-1-1.html
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2113
解决:1070
题目描述:
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
输入:
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
输出:
对每个测试用例,在1行里输出最小的公路总长度。
样例输入:
3 1 2 1 1 3 2 2 3 4 4 1 2 1 1 3 4 1 4 1 2 3 3 2 4 2 3 4 5 0
样例输出:
3 5
来源:2006年浙江大学计算机及软件工程研究生机试真题
答疑:解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7741-1-1.html
/* 1.Kruskal算法求最小生成树---畅通工程。两点若连通,则必定在同一集合中,有共同的树根。 2.scanf输入掉了&,瞬间无法运行卡死。 */ #include<stdio.h> #include<algorithm> using namespace std; int ans,parent[101]; struct E{ int a,b; int edge; bool operator < (const E &tmp) const{ //运算符重载,定义结构体加法。 return edge<tmp.edge; } }r[5000]; int findRoot(int tmp1) { if(parent[tmp1]==-1) return tmp1; else{ int tmp=findRoot(parent[tmp1]); parent[tmp1]=tmp; //路径压缩 return tmp; } } int main() { //freopen("G:\\in.txt","r",stdin); int n,i,sumEdge; while(scanf("%d",&n)!=EOF){ if(n==0) break; sumEdge=n*(n-1)/2; ans=0; //全局变量初始化 for(i=0;i<sumEdge;i++){ scanf("%d%d%d",&r[i].a,&r[i].b,&r[i].edge); } sort(r,r+sumEdge); for(i=0;i<=n;i++) //初始化各结点的父亲 ,从1开始编号,注意上界是小于等于n,不然0分啊。。。。。 parent[i]=-1; for(i=0;i<sumEdge;i++){ //按边从小到大遍历一遍,Kruskal算法 int a1=findRoot(r[i].a),a2=findRoot(r[i].b); if(a1!=a2){ parent[a1]=a2; ans+=r[i].edge; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- 九度OJ 题目1017:还是畅通工程 (最小生成树)
- 【九度OJ】题目1017:还是畅通工程 解题报告
- 九度OJ题目1017:还是畅通工程
- 九度 OJ 题目1017:还是畅通工程
- 九度oj 题目1012:畅通工程 【ZJU2005机试题3】
- 九度OJ 1017:还是畅通工程 (最小生成树)
- 九度OJ 1017:还是畅通工程 (最小生成树)
- 九度OJ 1017:还是畅通工程 (最小生成树)
- 【九度】题目1017:还是畅通工程
- hdu 1233&&九度oj 1017还是畅通工程
- 九度OJ-1017:还是畅通工程
- 九度题目1017:还是畅通工程 最小生成树算法(并查集算法变种)
- 九度:题目1017:还是畅通工程
- 九度 题目1017:还是畅通工程
- 九度 题目1017:还是畅通工程
- HDU 1233 还是畅通工程 (九度OJ 1017)
- 九度oj 题目1024:畅通工程 【ZJU2007考研机试题5】
- 题目1017:还是畅通工程(2006年浙江大学计算机及软件工程研究生机试真题)
- 题目1017:还是畅通工程(间接排序)
- 九度OJ题目:1017 还是畅通工程