当前位置:编程学习 > php >>

最小生成树用到并查集http://acm.hdu.edu.cn/showproblem.php?pid=1233

模板题:
不解释
[cpp] 
#include<cstdio> 
#include<algorithm> 
#include<string.h> 
#include<iostream> 
using namespace std; 
class node 

public : 
    node() 
    { 
    val=0;   
    } 
 
    bool operator<(const node x)const 
    { 
        return this->val<x.val; 
    } 
    int val; 
    int x,y; 
}; 
node a[10002]; 
int n; 
int num[10002]; 
int find(int x) 

return num[x]==x?x:num[x]=find(num[x]); 

int main()   www.zzzyk.com

    while(~scanf("%d",&n)&&n) 
    { 
    node a[10002]; 
    int con=n*(n-1)/2; 
    for(int i=1;i<=con;++i) 
    { 
        scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].val); 
        num[i]=i; 
    } 
    sort(a+1,a+con+1); 
    int sum=0; 
    //sum+=a[1].val; 
    for(int i=1;i<=con;i++) 
    { 
    int xx=find(a[i].x),yy=find(a[i].y); 
    if(xx!=yy) 
      { 
        num[xx]=yy; 
        sum+=a[i].val; 
      } 
    } 
    printf("%d\n",sum); 
    } 
return 0; 
}  

 

作者:Java_beginer1
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,