码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1232

时间:2015-04-10 22:07:12      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:acm

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>

using namespace std;
#define maxn 1000 + 10

int p[maxn], n, m;
//bool mark[maxn];
//int Rank[maxn];

void init()
{
    for(int i=1; i<=n; i++)
    p[i] = i;
    //memset(Rank, 0, sizeof(Rank));
   // memset(mark, false, sizeof(mark));
}

int find(int x)
{
    return x == p[x] ?  x : p[x] = find(p[x]);    
}

int main()
{
     while(~scanf("%d", &n) && n)
     { 
            cin>>m;
            int cnt = n - 1;
            init();
            while(m--)
            {
                int a, b;
                scanf("%d%d", &a, &b);
                int x = find(a);
                int y = find(b);
                /*
                if(x != y)
                {
                     if(Rank[x] > Rank[y])
                        p[y] = x; 
                     else
                     {
                         p[x] = y;
                         if(Rank[x] == Rank[y]) 
                            Rank[y]++;   
                     }
                }
                */
                if(x != y)
                {
                     p[x] = y;
                 cnt--;
                 }
            }  
            /*        
            for(int i=1; i<=n; i++)
                  {
                     int a = p[i];
                     //cout<<a<<" ";
                     if(!mark[a]) 
                     {
                                  cnt++;       
                                  mark[a] = true;
                     }
                  }   
                  cout<<cnt - 1<<endl;  
                  */
                  cout<<cnt<<endl;
     }
     return 0;    
}

HDU 1232

标签:acm

原文地址:http://blog.csdn.net/dojintian/article/details/44985433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!