例题一:畅通工程
输入:第一行为一个数字n,代表n个城市,接下来的n*(n-1)/2行每行由三个数字a,b,dis组成,分别代表ab两个城市之间的距离(测试用例不只有一个)。eg
3
1 2 1
1 3 2
2 3 4
输出连通这些城市的最短距离
eg
3
C++实现
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int Tree[101];
int n;
int a,b,cost;
int findRoot(int x){
if(Tree[x]==-1) return x;
else{
int tmp = findRoot(Tree[x]);
Tree[x] = tmp;
return tmp;
}
}
struct edge{
int a,b,cost;
bool operator<(const edge &A) const{
return cost<A.cost;
}
}E[6000];
int main(){
while(cin>>n&&n){
for(int i = 1;i<=n*(n-1)/2;i++){
cin>>a>>b>>cost;
E[i].a = a;
E[i].b = b;
E[i].cost = cost;
}