博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2545 树上战争(并查集)
阅读量:4137 次
发布时间:2019-05-25

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

树上战争

Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 817 Accepted Submission(s): 442
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 1 1 2 1 2 5 2 1 2 1 3 3 4 3 5 4 2 4 5 0 0
Sample Output
lxh pfz lxh提示:本题输入、输出都很多,请使用scanf和printf代替cin、cout。
Source
#include 
#include
#include
#include
#include
#include
using namespace std;const int N=100000+5;int pre[N];inline int find(int x){ int sum=0; while(pre[x]!=x){ x=pre[x]; sum++; } return sum;}int main(){ int n,m,i,a,b; while(scanf("%d%d",&n,&m)==2){ if(n==0&&m==0) break; memset(pre,0,sizeof(int)*(n+1)); for(i=0;i

转载地址:http://ebmvi.baihongyu.com/

你可能感兴趣的文章
static 作用
查看>>
关键段Critical Section
查看>>
事件Event
查看>>
互斥量Mutex
查看>>
大端模式和小端模式
查看>>
TCP协议三次握手、四次挥手过程分析
查看>>
静态链接库和动态链接库相同函数覆盖及库调用顺序
查看>>
十道海量数据处理面试题与十个方法大总结
查看>>
二叉树遍历--递归及非递归解法
查看>>
布隆过滤器
查看>>
判断单链表是否有环 两链表是否相交
查看>>
赛马问题
查看>>
全排列(1) ----字典序
查看>>
全排列(2)----邻位对换法
查看>>
内核地址空间分布和进程地址空间
查看>>
伙伴算法
查看>>
后缀数组及应用
查看>>
阿里 骰子概率问题
查看>>
抛硬币 连续n个正面
查看>>
Catalan 卡特兰数数的分析和应用
查看>>