码迷,mamicode.com
首页 > Web开发 > 详细

poj 1962 Corporative Network

时间:2014-09-29 13:37:01      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   os   ar   for   sp   2014   

题目链接:http://poj.org/problem?id=1962

思路:每个集合中用根节点标记这个集合,每个点到根节点的距离。

code:

<span style="font-size:18px;">#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<set>

using namespace std;

const int maxn=20005;

int pa[maxn],d[maxn];

int findset(int x)   //找出x节点到根节点的距离
{
    if(pa[x]!=x)           
    {
        int root=findset(pa[x]);
        d[x]+=d[pa[x]];       //更新x节点的距离
        return pa[x]=root;
    }
    else return x;
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        char str[10];
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            pa[i]=i;
            d[i]=0;
        }
        while(scanf("%s",str))
        {
            if(str[0]=='O') break;
            if(str[0]=='E')
            {
                int x;
                scanf("%d",&x);
                findset(x);
                printf("%d\n",d[x]);
            }
            if(str[0]=='I')
            {
                int x,y;
                scanf("%d%d",&x,&y);
                pa[x]=y;
                d[x]=abs(x-y)%1000;
            }
        }
    }
    return 0;
}
</span>


poj 1962 Corporative Network

标签:style   blog   http   io   os   ar   for   sp   2014   

原文地址:http://blog.csdn.net/u010304217/article/details/39666599

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