UESTC_树上战争 CDOJ 32
给一棵树,如果树上的某个节点被某个人占据,则它的所有儿子都被占据,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 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相关推荐
- HDU2545 树上战争【树+并查集】
树上战争 Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDOJ 2545 树上战争
树上战争 Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu2545树上战争
树上战争 Time Limit : 10000/4000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- HDU-2545 树上战争
树上战争 Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 树上战争 HDU-2545
树上战争 Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 树上战争(2545)
给一棵树,如果树上的某个节点被某个人占据,则它的所有儿子都被占据,lxh和pfz初始时分别站在两个节点上,谁当前所在的点被另一个人占据,他就输了比赛,问谁能获胜 Input 输入包含多组数据 每组第一 ...
- HDU 2542 树上战争
在一个树状图中,如果要赢,两个人都要往根节点方向走,所以比较两人初始位置谁更靠近跟就可以,定义一个数组fa记录父节点(此题并没啥用),定义一个ra记录等级,等级越大越儿子. #include<c ...
- POJ 3694 (tarjan缩点+LCA+并查集)
好久没写过这么长的代码了,题解东哥讲了那么多,并查集优化还是很厉害的,赶快做做前几天碰到的相似的题. 1 #include <iostream> 2 #include <algori ...
- CCF认证训练行动路线图
通过CCF认证的训练题选自三个方面,一是CCF认证试题,二是使用北大百练的练习题等等,三是ACM-ICPC的练习题. CCF认证的试题是必须练习的,通过CCF试题的练习有助于了解试题风格特点.然而CC ...
- 《程序设计技术》课程辅助学习资料
本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定 ...
最新文章
- 2022-2028年中国手机配件行业发展前景战略及投资风险预测分析报告
- 干掉 RESTful!GraphQL 真香!
- 『SHELL』--SHELL脚本执行方式(转)
- 杂谈--SQL SERVER版本
- 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
- jenkins构建触发器定时任务
- 转载:闲话权限设计三层境界
- 恋爱记v1.0源码-在线生成表白页
- 一步一步写算法(之非递归排序)
- Management reporter 2012 与AX 2012
- spss和python有什么不同_python与spss的不同
- 1. TensorFlow 2.8(2.5\2.6\2.x) GPU windows 安装教程
- zookeeper分布式安装与配置
- 小程序的申请开通需要什么条件
- 《阿凡达》重夺全球影史冠军;区块链或推动“疫苗护照”国际互认 | 美通企业日报...
- 超过70%的5G应用将发生于室内!共建共享室分助力5G高质量加速发展
- vs无法产生pdb文件,也就无法断点调试
- 浙大版《C语言程序设计(第3版)》题目集
- 基于PaddleDetection-YOLOV3做一个完整的图形目标检测项目
- VS 2019 + CUDA 10 开发环境搭建