博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3635 Dragon Balls (带权并查集)
阅读量:5288 次
发布时间:2019-06-14

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

题目链接:

转载于:                     (这个博客写的非常好,很详细)

题目大意:

 每一个城市都有一颗龙珠,但是随着时间的推移,龙珠会被移到其他的城市,悟空想去收集这些龙珠,但是他需要你告知他,他要找的那颗龙珠的所在的城市,以及这个城市所拥有的龙珠数量,还有这颗龙珠迁移过多少次。

 解题分析:

此题的难点在于转移次数的求解,如果暴力让每个转移过的球转移次数+1,会超时,所以,考虑在状态压缩的时候,更新转移次数。某节点的实际转移次数为,该节点现在的转移次数加上它父节点的转移次数。

 

#include
#include
#include
#include
using namespace std;#define N 10010struct node{ int parent; //该节点的父节点 int citynum; //该城市含的球的数量 int transport; //转移次数}p[N];int find(int x){ if (x == p[x].parent) return x; int temp = p[x].parent; p[x].parent = find(p[x].parent); p[x].transport += p[temp].transport; //这点需要反复揣摩,重点,这里不太理解 return p[x].parent;}void join(int x, int y){ int root1, root2; root1 = find(x); root2 = find(y); if(root1!=root2){ p[root1].parent = root2; p[root1].transport=1; //原根节点转移次数置为1 p[root2].citynum += p[root1].citynum; p[root1].citynum = 0; }}int main(){ int ncase=0, T; scanf("%d", &T); while (T--) { int num, querynum; scanf("%d%d", &num, &querynum); for (int i = 1; i <= num; ++i) //初始化 { p[i].parent = i; p[i].citynum = 1; p[i].transport = 0; } printf("Case %d:\n", ++ncase); for (int i = 0; i < querynum; ++i) { char ch; scanf("%*c%c", &ch); //%*c表示只读入,但是不给变量赋值,改成getchar(),也是一样的 if (ch == 'T') { int from, to; scanf("%d%d", &from, &to); join(from, to); } else { int qcity; scanf("%d", &qcity); int ans = find(qcity); printf("%d %d %d\n", ans, p[ans].citynum, p[qcity].transport); } } } return 0;}

 

 

2018-07-23

转载于:https://www.cnblogs.com/00isok/p/9357287.html

你可能感兴趣的文章
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>