hdu1232 畅通工程

 1 #include<stdio.h>

 2 int bin[1002];

 3 int findx(int x)

 4 {

 5     int r=x;

 6     while(bin[r]!=r)

 7         r=bin[r];

 8     return r;

 9 }

10 void merge(int x,int y)

11 {

12     int fx,fy;

13     fx=findx(x);

14     fy=findx(y);

15     if(fx!=fy)

16     bin[fx]=fy;

17 }

18 int main()

19 {

20     int i,j,m,n,x,y,count;

21     while(scanf("%d",&n),n)

22     {

23         for(i=1;i<=n;i++)

24             bin[i]=i;

25         for(scanf("%d",&m);m>0;m--)

26         {

27             scanf("%d%d",&x,&y);

28             merge(x,y);

29         }

30         for(count=-1,i=1;i<=n;i++)

31             if(bin[i]==i)

32                 count++;

33         printf("%d\n",count);

34     }

35     return 0;

36 }

这题无语了!!

你可能感兴趣的:(HDU)