zoukankan      html  css  js  c++  java
  • UVALive 3027 Corporative Network

    给定两种操作

    1.E I 查询I到根节点的距离

    2.I I J 将I的父节点设为J,I,J的距离变为|I-J|%1000。

    在查找结点的时候顺便把结点到根节点的距离更新。

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <climits>
     4 #include <cstring>
     5 #include <cstdlib>
     6 #include <cmath>
     7 #include <vector>
     8 #include <queue>
     9 #include <algorithm>
    10 #define esp 1e-6
    11 #define pb push_back
    12 #define in  freopen("in.txt", "r", stdin);
    13 #define out freopen("out.txt", "w", stdout);
    14 #define print(a) printf("%d
    ",(a));
    15 #define bug puts("********))))))");
    16 #define Rep(i, c) for(__typeof(c.end()) i = c.begin(); i != c.end(); i++)
    17 #define inf 0x0f0f0f0f
    18 using namespace std;
    19 typedef long long  LL;
    20 typedef vector<int> VI;
    21 typedef pair<int, int> pii;
    22 typedef vector<pii,int> VII;
    23 typedef vector<int>:: iterator IT;
    24 
    25 #define N 22222
    26 int pa[N],  dis[N];
    27 void init(void)
    28 {
    29     for(int i = 0; i < N; i++)
    30         pa[i] = i, dis[i] = 0;
    31 }
    32 inline int findset(int x)
    33 {
    34     if(pa[x] == x)
    35     {
    36         return x;
    37     }
    38     else
    39     {
    40         int r = findset(pa[x]);
    41         dis[x] += dis[pa[x]];
    42         return pa[x] = r;
    43     }
    44 }
    45 int main(void)
    46 {
    47 
    48     int T, n;
    49     for(int t = scanf("%d", &T); t <= T; t++)
    50     {
    51         init();
    52         scanf("%d", &n);
    53         char  op[10];
    54         while(scanf("%s", op) && op[0] != 'O')
    55         {
    56             int u, v;
    57             if(op[0] == 'E')
    58             {
    59                 scanf("%d", &u);
    60                 findset(u);
    61                 printf("%d
    ", dis[u]);
    62             }
    63             else
    64             {
    65                 scanf("%d%d", &u, &v);
    66                 dis[u] = (int)fabs(u-v)%1000;
    67                 pa[u] = v;
    68             }
    69         }
    70     }
    71     return 0;
    72 }
  • 相关阅读:
    链接唤醒IOSApp
    C#抽象属性
    c#结构体与类的区别
    广告学入门
    个性化推荐十大挑战[
    MapReduce 读取和操作HBase中的数据
    mysql sql命令大全
    从B 树、B+ 树、B* 树谈到R 树
    MapReduce操作HBase
    Meanshift,聚类算法
  • 原文地址:https://www.cnblogs.com/rootial/p/3327075.html
Copyright © 2011-2022 走看看