LA 3027 Corporative Network

来源:互联网 发布:2016淘宝推广有效方法 编辑:程序博客网 时间:2024/04/28 05:45

并查集的应用。

在压缩路径的时候维护一个dist数组,保存其到祖先的长度。

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int uset[21000],dist[21000];int abs(int a){    return a>0?a:-a;}bool init(){    int i;    for (i=0; i<21000; i++)        uset[i]=i;    memset(dist,0,sizeof(dist));    return true;}int root(int x){    int t;    if (uset[x] == x)        return x;    t=root(uset[x]);    dist[x]+=dist[uset[x]];    return uset[x]=t;}int main(){    int prob,n,t1,t2,op;    char tc;    scanf("%d",&prob);    while (prob--)    {        init();        scanf("%d",&op);        while (true)        {            scanf("%*c%c",&tc);            if (tc == 'E')            {                scanf("%d",&t1);                root(t1);                printf("%d\n",dist[t1]);            }            else if (tc == 'I')            {                scanf("%d%d",&t1,&t2);                uset[t1]=t2;                dist[t1]=abs(t2-t1)%1000;            }            else                break;        }    }}


原创粉丝点击