HDU 1879 继续畅通工程
2011-09-18 11:13
411 查看
这题就是注意一下当状态为1是就把这两给点合并到一个集合;
#include<stdio.h> #include<stdlib.h> struct t { int x,y,flag,cost; }kru[5024]; int set[124]; int cmp( const void *a,const void *b ) { return ( ( t * )a )->cost-( ( t * )b )->cost; } int find( int x ) { return x==set[x]?x:set[x]=find( set[x] ); } int kruscal( int N ) { int sum=0,X,Y; for( int i=0;i<N; i++ ) { if( kru[i].flag==0 ) if( ( X=find( kru[i].x ) )!=( Y=find( kru[i].y ) ) ) { sum+=kru[i].cost; set[Y]=X; } } return sum; } int main( ) { int n; while( scanf( "%d",&n ),n ) { for( int i=0;i<=n;i++ ) { set[i]=i; } int N=n*( n-1 )/2; for( int i=0; i<N; i++ ) { scanf( "%d%d%d%d",&kru[i].x,&kru[i].y,&kru[i].cost,&kru[i].flag ); if( kru[i].flag==1 ) { set[find( kru[i].x )]=find( kru[i].y ); } } qsort( kru,N,sizeof( kru[0] ),cmp ); printf( "%d\n", kruscal( N )); } }
相关文章推荐
- hdu 1879 继续畅通工程
- HDU1879 继续畅通工程
- hdu 1879 继续畅通工程 (并查集+最小生成树)
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程最小生成树prim)
- HDU 1879 继续畅通工程
- HDU 1879 继续畅通工程-最小生成树
- HDOJ 1879 HDU 1879 继续畅通工程 ACM 1879 IN HDU
- 【最小生成树+kruskal】杭电 hdu 1879 继续畅通工程
- HDU-1879-继续畅通工程(prim)
- hdu 1879 继续畅通工程 最小生成树kruskal
- HDU 1879 继续畅通工程
- hdu1879——继续畅通工程——————【kruskal模板】
- HDU 1879 继续畅通工程
- hdu - 1879 - 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 prime 继续畅通工程
- hdu 1102 Constructing Roads +1879 继续畅通工程(MST)
- HDU 1879 继续畅通工程