本文主要是介绍九度oj 题目1024:畅通工程 【ZJU2007考研机试题5】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目1024:畅通工程
/* */
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,m,parent[105];//n-道路数,m-村庄数
struct E
{int a,b;int c;
}r[105];
bool cmp(E t1,E t2)
{return t1.c<t2.c;
}
int findRoot(int fr)
{if(parent[fr]==-1)return fr;else{int tmpR=findRoot(parent[fr]);parent[fr]=tmpR;return tmpR;}
}
int main()
{//freopen("G:\\in.txt","r",stdin);while(scanf("%d %d",&n,&m)!=EOF){if(n==0) break;int minCost=0,i,cnt=0;//注意每轮循环都要初始化。for(i=0;i<n;i++)scanf("%d %d %d",&r[i].a,&r[i].b,&r[i].c);sort(r,r+n,cmp);for(i=1;i<=m;i++)parent[i]=-1;for(i=0;i<n;i++){int tmp1=findRoot(r[i].a),tmp2=findRoot(r[i].b);if(tmp1!=tmp2){parent[tmp1]=tmp2;minCost=minCost+r[i].c;}}for(i=1;i<=m;i++){if(parent[i]==-1)cnt++;}if(cnt==1)printf("%d\n",minCost);elseprintf("?\n"); }return 0;
}
这篇关于九度oj 题目1024:畅通工程 【ZJU2007考研机试题5】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!