1. 程式人生 > >bzoj1083: [SCOI2005]繁忙的都市(最小生成樹)

bzoj1083: [SCOI2005]繁忙的都市(最小生成樹)

post pri int using amp () font san class

1083: [SCOI2005]繁忙的都市

題目:傳送門

題解:

   一道大水題:

   第一問明顯輸出n-1

  第二問最小生成樹

   秒切

代碼:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cstdlib>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 struct node
 8 {
 9     int x,y,c;
10 }a[110000];
11 int cmp(const void *xx,const void *yy) 12 { 13 node n1=*(node *)xx; 14 node n2=*(node *)yy; 15 return n1.c-n2.c; 16 } 17 int fa[110000]; 18 int findfa(int x) 19 { 20 if(x!=fa[x])fa[x]=findfa(fa[x]); 21 return fa[x]; 22 } 23 int n,m; 24 int main() 25 { 26 scanf("%d%d
",&n,&m); 27 for(int i=1;i<=m;i++) 28 scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c); 29 qsort(a+1,m,sizeof(node),cmp); 30 for(int i=1;i<=n;i++)fa[i]=i; 31 int ans=0; 32 for(int i=1;i<=m;i++) 33 { 34 int p=findfa(a[i].x),q=findfa(a[i].y);
35 if(fa[p]!=q) 36 { 37 fa[p]=q; 38 ans++; 39 if(ans==n-1) 40 { 41 printf("%d %d\n",n-1,a[i].c); 42 break; 43 } 44 } 45 } 46 return 0; 47 }

bzoj1083: [SCOI2005]繁忙的都市(最小生成樹)