题目1017:还是畅通工程

来源:互联网 发布:linux添加永久默认路由 编辑:程序博客网 时间:2024/06/08 08:36

#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <stack>#include <queue>#include <vector>using namespace std; //exp5.3#define N 101int Tree[N];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;    int cost;    bool operator < (const Edge &A) const{        return cost < A.cost;    }}edge[6000]; int main(){    int n;    while(scanf("%d",&n)!=EOF && n!=0){        for(int i=1;i<=n*(n-1)/2;i++){            scanf("%d%d%d",&edge[i].a,&edge[i].b,&edge[i].cost);        }        sort(edge+1,edge+1+n*(n-1)/2);        for(int i=1;i<=n;i++)            Tree[i]=-1;        int ans=0;        for(int i=1;i<=n*(n-1)/2;i++){            int a=findRoot(edge[i].a);            int b=findRoot(edge[i].b);            if(a!=b){                Tree[a]=b;                ans+=edge[i].cost;            }        }        printf("%d\n",ans);    }    return 0;} /**************************************************************    Problem: 1017    User: cust123    Language: C++    Result: Accepted    Time:20 ms    Memory:1588 kb****************************************************************/


0 0
原创粉丝点击