关闭

UVa 1329 Corporative Network(并查集)

123人阅读 评论(0) 收藏 举报
分类:

题目链接:http://acm.hust.edu.cn/vjudge/problem/36132

大意:给出n个结点,一系列操作。对于操作I,输入u,v,把u的父结点设为v,距离为|u-v|mod1000;对于操作E,输入u,输出u到根结点的距离。

思路:两个操作正好对应了并查集的合并和查找,对于操作I,由于v没有父结点,直接令pre[u] = v即可;对于操作E,由于根节点是动态变化的,所以要先更新再查询。


#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn = 2e4 + 5;
int n, pre[maxn], dist[maxn];

int find(int x)
{
    if (pre[x] == x) return pre[x];
    int y = pre[x];
    pre[x] = find(pre[x]);
    dist[x] += dist[y];
    return pre[x];
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--) {
        scanf("%d",&n);
        memset(dist, 0, sizeof dist);
        for(int i = 1; i <= n; i++) pre[i] = i;
        char s[2];
        while(scanf("%s",s) && s[0] != 'O') {
            if (s[0] == 'E') {
                int x;
                scanf("%d",&x);
                find(x);
                printf("%d\n",dist[x]);
            }
            else {
                int a,b;
                scanf("%d%d",&a,&b);
                pre[a] = b;
                dist[a] = abs(a-b) % 1000;
            }
        }
    }
}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

UVA 315【求割点数目】

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=251题意:求割点数目代码:#include <stdio.h> #...
  • u014427196
  • u014427196
  • 2015-08-06 10:15
  • 453

UVA315-Network(求割点个数,模板题)||tarjan

这个就是很裸的求割点的个数 关于割点什么的可以参考:http://blog.csdn.net/idrandom/article/details/52173817#include<iostream> #include<cstdio> #include<cstring&g...
  • IDrandom
  • IDrandom
  • 2016-08-10 19:06
  • 234

《大白书》192页 uva 1329 合作网络

【问题描述】   有n个结点(编号为1..n),初始时每个结点的父亲都不存在。你的任务是执行一次I操作和E操作,格式如下:   I u v:把节点u的父亲点设置为v,距离为|u-v|除以1000的余数。输入保证执行指令前u没有父亲节点。   E u:询问u 到根接点的距离(输出距离 mod 100...
  • qq_35546274
  • qq_35546274
  • 2016-07-13 11:09
  • 103

习题4-8 特别困的学生 UVa12108

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #define N 1000000 int n; int a[15], b[15], c[15]; int main() { int rnd ...
  • u014800748
  • u014800748
  • 2014-08-06 21:35
  • 1876

UVA-815 flooded!(白书说能锻炼思维的题)

题意挺长的,而且是英文的,我这里就简述一下吧,就是有m*n个格子,每个格子都是10*10的规格(高度是无限的),给出每个格子的海拔,然后给出一个洪水的量,输出最后水深度和完全被水覆盖的面积百分比。这个主要理解问题在于,不存在什么盆地之类的问题,这些格子就像连通器一样,涨水都是一块涨的,嗯,大概就是这...
  • FishSeeker
  • FishSeeker
  • 2016-04-08 09:36
  • 958

LA 3027 Corporative Network 并查集记录点到根的距离

Corporative Network Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Subm...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2013-06-26 14:46
  • 1101

UVA 1658 - Admiral (拆点+最小费用流)

该题中的拆点法是解决几点容量的通用方法 。  因为只有容量限制的话仍然不能满足每个结点只访问一次这个限制 ,原因很简单,大家画个图就知道了,假设从起点有两条路到同一个结点2,然后又都到末点n,虽然它们满足流量限制但是经过了同一个结点。  那么怎么解决这个问题呢? 答案是:拆点法 ...
  • weizhuwyzc000
  • weizhuwyzc000
  • 2015-08-21 20:53
  • 1096

UVAalive 3027 Corporative Network(并查集的路径压缩维护)

A very big corporation is developing its corporative network. In the beginning each of the N enterprises of the corporation, numerated from 1 to N, or...
  • u012313382
  • u012313382
  • 2015-07-22 16:03
  • 403

uva 12174 - Shuffle(预处理+暴力)

题目链接:uva 12174 - Shuffle 题目大意:有一个播放器用于播放音乐,现在给出s(已有曲目的数量),n给出记录的长度。播放器有随机播放的功能,每次生成一个1~s的随机系列进行播放,当s首歌全部播放完后,重新生成一个播放序列。现在有一段长度为n的播放记录片段(即不完全,前后可...
  • u011328934
  • u011328934
  • 2014-02-16 19:05
  • 1498

Rails(UVa514)(栈)

Rails  There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortun...
  • hdd871532887
  • hdd871532887
  • 2015-12-21 07:13
  • 655
    个人资料
    • 访问:18913次
    • 积分:1268
    • 等级:
    • 排名:千里之外
    • 原创:107篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类