程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 最小生成樹用到並查集http://acm.hdu.edu.cn/showproblem.php?pid=1233

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

編輯:C++入門知識

模板題:
不解釋
[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.2cto.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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved