HDU2545:树上战争(并查集)

news/2024/11/16 6:58:50/

树上战争

Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1012    Accepted Submission(s): 572


Problem Description
给一棵树,如果树上的某个节点被某个人占据,则它的所有儿子都被占据,lxh和pfz初始时分别站在两个节点上,谁当前所在的点被另一个人占据,他就输了比赛,问谁能获胜

Input
输入包含多组数据
每组第一行包含两个数N,M(N,M<=100000),N表示树的节点数,M表示询问数,N=M=0表示输入结束。节点的编号为1到N。
接下来N-1行,每行2个整数A,B(1<=A,B<=N),表示编号为A的节点是编号为B的节点的父亲
接下来M行,每行有2个数,表示lxh和pfz的初始位置的编号X,Y(1<=X,Y<=N,X!=Y),lxh总是先移动


Output
对于每次询问,输出一行,输出获胜者的名字

Sample Input
  
2 11 21 25 21 21 33 43 54 24 50 0

Sample Output
  
lxhpfzlxh提示: 本题输入、输出都很多,请使用scanf和printf代替cin、cout。

Source
UESTC 6th Programming Contest Online
思路:其实是求哪个点离他们的根节点近,sta[i]更新i点到根节点的距离。

# include <stdio.h>
# include <string.h>
const int MAXN = 100000;
int pre[MAXN+1], sta[MAXN+1];int find(int x)
{if(x == pre[x])return x;else{int t= pre[x];pre[x] = find(pre[x]);sta[x] = sta[t] + sta[x];return pre[x];}
}
int main()
{int n, m, a, b;while(~scanf("%d%d",&n,&m), n+m){for(int i=1; i<=n; ++i)pre[i] = i;memset(sta, 0, sizeof(sta));for(int i=1; i<n; ++i){scanf("%d%d",&a,&b);int px = find(a);int py = find(b);if(px != py){pre[py] = px;sta[py] = sta[a] + sta[b] + 1;}}while(m--){scanf("%d%d",&a,&b);find(a);find(b);if(sta[a] <= sta[b])puts("lxh");elseputs("pfz");}}return 0;
}




http://www.ppmy.cn/news/303977.html

相关文章

2545: 内部收益率

2545: 内部收益率 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 25 Solved: 8 [ Submit][ Status][ Web Board] Description 在金融中&#xff0c;我们有时会用内部收益率IRR来评价项目的投资财务效益&#xff0c;它等于使得投资净现值NPV等于0的贴现率。换句话说&#x…

【光学】基于matlab GUI维达尔之眼计算【含Matlab源码 2545期】

⛄一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【光学】基于matlab GUI维达尔之眼计算【含Matlab源码 2545期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏Matlab物理应用(初级版) 备注: 点击上面蓝色字体付费专栏Matlab物理应用(…

hdu 2545 树上战争

//只需求出两个节点到达公共祖先节点所走的次数&#xff0c;只要求出节点到最原始祖先节点的次数 //并差集 #include<stdio.h> int f[100002]; int find(int a) {int cont0;while(f[a]!a){cont;af[a];}return cont; } int main() {int i,a,b,n,m;while(scanf("%d%d…

洛谷P2545 [AHOI2004]实验基地

题目描述 输入输出格式 输入格式&#xff1a; 第一行有一个整数N(3<N<2000)&#xff0c;表示登陆地带的大小是2N。随后的两行每一行有N个整数&#xff08;其绝对值不超过10^6&#xff09;&#xff0c;表示对应的矩形土地的适用度评估值&#xff0c;各个整数之间用一个空…

警惕利用CVE-2015-2545漏洞进行针对性攻击

2015年末&#xff0c;卡巴斯基实验室的全球研究和分析团队&#xff08;GReAT&#xff09;对未来的威胁环境趋势变化进行了一系列预测。其中一个关键趋势是针对性攻击将变得更为简单和高性价比。包括使用&#xff08;循环使用&#xff09;现成的恶意软件、合法的免费软件或商业软…

zoj 2545

说的是随着计算机的发站。处理器的位数也在不断增加。。10年增加一倍。。现在给你了一种判断增长等级的办法&#xff0c;&#xff0c;让你用这种办法来判断这个数。。其实就是如果这个计算机的位数是32位那么找出一个n是n&#xff01;小于2的32次方。其实可以把所有的都求出来之…

POJ 2545 解题报告

这道题和之前的2247&#xff0c; 1338是一样的。唯一注意的地方是数据范围更大&#xff0c;不能用int了&#xff0c;用unsigned long long即可。 thestoryofsnow2545Accepted160K0MSC879B /* ID: thestor1 LANG: C TASK: poj2545 */ #include <iostream> #include &…

hdu2545树上战争

树上战争 Time Limit : 10000/4000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 4 Accepted Submission(s) : 4 Problem Description 给一棵树&#xff0c;如果树上的某个节点被某个人占据&#xff0c;则它的所有儿子都被占据&#xf…