首页 > 其他 > 详细

hdu 1213 -how many tables

时间:2014-07-24 21:23:36      阅读:319      评论:0      收藏:0      [点我收藏+]

凭记忆打的代码,在学数据结构的时候,用下标索引的方法进行合并,即将相同集合中的数据归为一颗树中的节点,当进行判断的时候,分别找父亲,若是同一个父亲就不用归并,否则就归并。用数组就可以了。

#include<iostream>
using namespace std;
int index[1001];
int getfather(int n)
{

    while(index[n] != n)
    {
        n = index[n];

    }
    return n;
}
int main()
{

    int m; cin >> m;
    while(m--)
    {
       int peo,pair;;
       cin >> peo >> pair;

       for(int i = 1;i <= peo;i++)
       {
           index[i] = i;

       }
       int fathera;
       int fatherb;
       for(int j = 0;j < pair;j++)
       {
           int a,b;
           cin >> a >> b;

           fathera = getfather(a);
           fatherb = getfather(b);
           if(fathera != fatherb)
           {

               index[fatherb] = fathera;
           }

       }

       int count = 0;
       for(int i = 1;i <= peo;i++)
       {
           if(i == index[i])
           {

               count++;
           }

       }
       cout << count << endl;

    }
    return 0;
}

hdu 1213 -how many tables,布布扣,bubuko.com

hdu 1213 -how many tables

原文:http://www.cnblogs.com/hhhhhhhhhhhhhhhhhhhhhhhhhhh/p/3865823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!