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

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个数,表示lxhpfz的初始位置的编号X,Y(1≤X,Y≤N,X≠Y),lxh总是先移动。

Output

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

Sample input and output

Sample Input Sample Output
2 1
1 2
1 2
5 2
1 2
1 3
3 4
3 5
4 2
4 5
0 0
lxh
pfz
lxh

解题报告

即求到根的距离,采用记忆化搜索..

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdbool.h>
 4 #include <stdlib.h>
 5 #define maxn 100005
 6
 7 int pre[maxn];
 8 int dis[maxn];
 9
10
11 int setdis(int id)
12 {
13   if (dis[id] != -1)
14    return dis[id];
15   dis[id] = 0;
16   if (pre[id] != id)
17    dis[id] = setdis(pre[id])+1;
18  return dis[id];
19 }
20
21
22
23 int main(int argc , char * argv[])
24 {
25  int i,j,n,m;
26  while(scanf("%d%d",&n,&m))
27   {
28       if (!n && !m)
29        break;
30       for(i = 0 ; i < n ; ++ i)
31          pre[i] = i;
32       memset(dis,-1,sizeof(dis));
33       for(i = 0 ; i < n-1 ; ++ i)
34        {
35          int a,b;
36          scanf("%d%d",&a,&b);
37          pre[b-1] = a-1;
38      }
39     for(i = 0 ; i < m ; ++ i)
40      {
41          int p1 , p2;
42          scanf("%d%d",&p1,&p2);
43          if (dis[p1-1] == -1)
44           setdis(p1-1);
45          if (dis[p2-1] == -1)
46           setdis(p2-1);
47          if (dis[p1-1] <= dis[p2-1])
48           printf("lxh\n");
49          else
50           printf("pfz\n");
51      }
52   }
53  return 0;
54 }

转载于:https://www.cnblogs.com/Xiper/p/4465691.html

UESTC_树上战争 CDOJ 32相关推荐

  1. HDU2545 树上战争【树+并查集】

    树上战争 Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  2. HDOJ 2545 树上战争

    树上战争 Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. hdu2545树上战争

    树上战争 Time Limit : 10000/4000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

  4. HDU-2545 树上战争

    树上战争 Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. 树上战争 HDU-2545

    树上战争 Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  6. 树上战争(2545)

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

  7. HDU 2542 树上战争

    在一个树状图中,如果要赢,两个人都要往根节点方向走,所以比较两人初始位置谁更靠近跟就可以,定义一个数组fa记录父节点(此题并没啥用),定义一个ra记录等级,等级越大越儿子. #include<c ...

  8. POJ 3694 (tarjan缩点+LCA+并查集)

    好久没写过这么长的代码了,题解东哥讲了那么多,并查集优化还是很厉害的,赶快做做前几天碰到的相似的题. 1 #include <iostream> 2 #include <algori ...

  9. CCF认证训练行动路线图

    通过CCF认证的训练题选自三个方面,一是CCF认证试题,二是使用北大百练的练习题等等,三是ACM-ICPC的练习题. CCF认证的试题是必须练习的,通过CCF试题的练习有助于了解试题风格特点.然而CC ...

  10. 《程序设计技术》课程辅助学习资料

    本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定 ...

最新文章

  1. 2022-2028年中国手机配件行业发展前景战略及投资风险预测分析报告
  2. 干掉 RESTful!GraphQL 真香!
  3. 『SHELL』--SHELL脚本执行方式(转)
  4. 杂谈--SQL SERVER版本
  5. 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
  6. jenkins构建触发器定时任务
  7. 转载:闲话权限设计三层境界
  8. 恋爱记v1.0源码-在线生成表白页
  9. 一步一步写算法(之非递归排序)
  10. Management reporter 2012 与AX 2012
  11. spss和python有什么不同_python与spss的不同
  12. 1. TensorFlow 2.8(2.5\2.6\2.x) GPU windows 安装教程
  13. zookeeper分布式安装与配置
  14. 小程序的申请开通需要什么条件
  15. 《阿凡达》重夺全球影史冠军;区块链或推动“疫苗护照”国际互认 | 美通企业日报...
  16. 超过70%的5G应用将发生于室内!共建共享室分助力5G高质量加速发展
  17. vs无法产生pdb文件,也就无法断点调试
  18. 浙大版《C语言程序设计(第3版)》题目集
  19. 基于PaddleDetection-YOLOV3做一个完整的图形目标检测项目
  20. VS 2019 + CUDA 10 开发环境搭建

热门文章

  1. 杨氏双缝干涉实验与薛定谔的猫
  2. 用html做祝福语朋友,祝福朋友工作顺利的祝福语
  3. 草莓换个做法,迫不及待想要吃
  4. 测试团队的建设和管理
  5. iOS 9.3.5 越狱
  6. FeedDemon 实务讲义
  7. (基于matlab)蒙特卡罗法 之 布丰投针实验 (1/10)
  8. 小程序 WeUI导入时导入失败,出现Component is not found in path 的错误
  9. 程序员为啥更赚钱?用Python做副业增长上万,躺赚
  10. 电脑重启桌面 计算机图标消失,电脑重启后计算机图标不见了怎么办