zoukankan      html  css  js  c++  java
  • LA 3027 Corporative Network(并查集)

    有n个点,一开始都是孤立的,然后有I,E两种操作 
    I        u v,把u的父节点设为v,距离为abs(u-v) % 1000,保证u之前没有父节点 
    E      询问u到根节点的距离

    #include<iostream>
    #include<cmath>
    using namespace std;
    const int maxn=2e4+5;
    int par[maxn],dis[maxn];
    void init(int n)
    {
        for(int i=0;i<=n;i++)
        {
            par[i]=i;
            dis[i]=0;
        }
    }
    int find(int x)
    {
        if(x==par[x])
            return x;
        int root=find(par[x]);
        dis[x]+=dis[par[x]];
        return par[x]=root;
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            init(n);
            char s[5];
            while(cin>>s,s[0]!='O')
            {
                int p,q;
                if(s[0]=='E')
                {
                    cin>>p;
                    find(p);
                    cout<<dis[p]<<endl;
                }
                if(s[0]=='I')
                {
                    cin>>p>>q;
                    par[p]=q;
                    dis[p]=abs(p-q)%1000;
                }
            }
    
        }
        return 0;
    }
  • 相关阅读:
    汇编之EBP的认识。
    【转】PE详解
    迟到的,2016年终总结
    Java 反射
    Java 集合与容器类
    Java 类加载与实例化
    Java 类与对象
    Java 值传递与对象拷贝
    Java 面向对象
    二叉树
  • 原文地址:https://www.cnblogs.com/orion7/p/7274039.html
Copyright © 2011-2022 走看看