树上战争

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

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
UESTC 6th Programming Contest Online

题解:

第一次做的时候,我找的是离lxh和pfz最近的那个公共根节点,不是最上面的根节点,这样写由于需要判断是否是公共根节点、是否是最近的等等,所以一直超时。后来直接找最上面的根节点,谁先找到谁就赢,用的类似并查集的思想。

代码:

#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
int tree[100100],f[100100];int findl(int u)
{int num=0;while(f[u]!=u){u=f[u];num++;}return num;
}int main()
{int n,m;while(scanf("%d%d",&n,&m)&&(m+n)){int a,b,e,s,i,j;for(i=0;i<=n;i++)f[i]=i;for(i=0; i<n-1; i++){scanf("%d%d",&a,&b);f[b]=a;}for(i=0; i<m; i++){scanf("%d%d",&s,&e);if(findl(s)<=findl(e))printf("lxh\n");else printf("pfz\n");}}
}

树上战争 HDU-2545相关推荐

  1. 树上战争(2545)

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

  2. HDOJ 2545 树上战争

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

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

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

  4. hdu2545树上战争

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

  5. HDU-2545 树上战争

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

  6. HDU 2542 树上战争

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

  7. hdu 2545 并查集

    题目描述:给定一个无向图,判断这个图是否满足任意两点之间有且仅有一条通路. 思路:并查集,若a和b之间有一条边且处于不同的集合中,则将a和b所在集合合并:若a和b本就在同一集合中(有一条通路),则加上 ...

  8. php讲字符串转成数组中,PHP将字符串转数组

    HDU 2545 树上战争 (并查集+YY) 题意:给一棵树,如果树上的某个节点被某个人占据,则它的所有儿子都被占据,lxh和pfz初始时分别站在两个节点上,lxh总是先移动 ,谁当前所在的点被另一个 ...

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

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

最新文章

  1. html目录怎么搞出来,webpack怎么把html搬到输出目录里?
  2. 网站排名优化看技巧!
  3. android串口通讯奇偶校验,串口通讯奇偶数校验及CRC校验如何使用详解
  4. NoSQL数据库Redis使用命令简介
  5. 多维DP UVA 11552 Fewest Flop
  6. [css] 有用过scss和sass吗?说说它们之间的区别是什么?
  7. python数据分析——如何用python连接远程数据库
  8. 如何正确的开始用 Go 编程
  9. hbase sqoop 实验_Hive/hbase/sqoop的基本使用教程~
  10. python 递归锁
  11. 最高76%破解成功率!GAN已经能造出“万能指纹”,你的手机还安全吗?
  12. Nokia Imaging SDK滤镜使用入门
  13. Android超精准计步器开发-Dylan计步
  14. 百度网盘提取码_百度网盘无提取码分享方法
  15. stm32开发板调试问题记录----去除flash读保护以及debug进不去main.c的问题
  16. 老中医化妆品效果怎么样?舒缓系列拒绝敏感肌肤困扰
  17. 想做一个SSL代理的集群中,有很多问题需要解决,I am all grateful to you for your advice
  18. MySQL基础 - 带搜索条件的查询
  19. 《30岁前的每一天》读书笔记
  20. NetApp透露甲骨文数据库备份计划

热门文章

  1. python键盘记录器_使用Python设计键盘记录器
  2. Wine零知识学习1 —— 介绍
  3. 借着谈转正感想的时机,再聊聊外企和互联网公司的工作体验
  4. 将VS2019设置成英文版
  5. 运用php做程序,PHP编程在WAP开发中的运用
  6. 4月10日第七次CCF
  7. 仿百度首页登陆框拖拽效果(可视窗口内拖动)
  8. libyuv接口YUY2ToI420的实际使用
  9. mac壁纸文件夹没有怎么办?mac动态壁纸怎么设置
  10. linux入门详细介绍