博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LA 3027 合作网络
阅读量:4949 次
发布时间:2019-06-11

本文共 1186 字,大约阅读时间需要 3 分钟。

题意:

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

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

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

 

思路:

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

1 #include
2 #include
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 else16 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 }

 

转载于:https://www.cnblogs.com/zyb993963526/p/6537818.html

你可能感兴趣的文章
機械の総合病院 [MISSION LEVEL: C]
查看>>
Delphi通用的序列化代码
查看>>
Educational Codeforces Round 6 D. Professor GukiZ and Two Arrays 二分
查看>>
设计模式:职责链模式(Chain Of Responsibility)
查看>>
stm32f429i disc usb cdc vcp 虚拟串口 example project (CubeMX Hal)
查看>>
Robust PCA via Outlier Pursuit
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
wddm 部署问题解决
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
Slab-based Intersection
查看>>
将输入流转为字符串工具类
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
高斯消元
查看>>
AngularJs表单验证
查看>>
regasm.exe 注册dll
查看>>
什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁
查看>>
静态方法是否属于线程安全
查看>>
fegin 调用源码分析
查看>>
Linux的基本命令
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>