zoukankan      html  css  js  c++  java
  • LA 3027 合作网络

     https://vjudge.net/problem/UVALive-3027

    题意:

    有n个结点,初始时每个结点的父节点都不存在。你的任务是执行一次I操作和E操作,格式如下:

    I u v:把结点u的父节点设为v,距离为|u-v|除以1000的余数。输入保证执行指令前u没有父节点。

    E u:询问u到根结点的距离。

    思路:

    主要思想是并查集,记录一下每个结点到根结点的距离即可。

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 
     5 const int maxn = 20000 + 5;
     6 
     7 int p[maxn], d[maxn];
     8 int n; 
     9 char c;
    10 
    11 int find(int x)
    12 {
    13     if (p[x] != x)
    14         return d[x] + find(p[x]);
    15     else
    16         return d[x];
    17 }
    18 
    19 int main()
    20 {
    21     //freopen("D:\txt.txt", "r", stdin);
    22     int T;
    23     scanf("%d", &T);
    24     while (T--)
    25     {
    26         memset(d, 0, sizeof(d));
    27         scanf("%d", &n);
    28         for (int i = 0; i <= n; i++)
    29             p[i] = i;
    30         int u, v;
    31         while (scanf("%c",&c) && c != 'O')
    32         {
    33             if (c == 'E')
    34             {
    35                 scanf("%d", &u);
    36                 int sum=find(u);
    37                 cout << sum << endl;
    38             }
    39             else if (c == 'I')
    40             {
    41                 scanf("%d%d", &u, &v);
    42                 p[u] = v;
    43                 d[u] = abs(v - u) % 1000;
    44             }
    45         }
    46     }
    47 }
  • 相关阅读:
    类型转换函数
    经典问题解析三
    函数调用操作符
    python xml_str转json
    SoapUI导入webService接口
    python两个字符串有变化值作对比
    jenkins编译源码和发布网站
    Jmeter上传文件
    Djiango数据库操作
    mongo常用sql
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6537818.html
Copyright © 2011-2022 走看看