zoukankan      html  css  js  c++  java
  • cdoj 树上战争(Battle on the tree) Label:并查集?

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

    Input

    输入包含多组数据

    每组第一行包含两个数NN,MM(NN,M≤100000M≤100000),NN表示树的节点数,MM表示询问数,N=M=0N=M=0表示输入结束。节点的编号为11到NN。

    接下来N−1N−1行,每行22个整数AA,BB(1≤A1≤A,B≤NB≤N),表示编号为AA的节点是编号为BB的节点的父亲。

    接下来MM行,每行有22个数,表示lxh和pfz的初始位置的编号XX,YY(1≤X1≤X,Y≤NY≤N,X≠YX≠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

    Source

    电子科技大学第六届ACM程序设计大赛 初赛

    代码

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<vector>
     5 #include<algorithm>
     6 using namespace std;
     7 int dis[100005],fa[100005];//dis到根节点距离 
     8 int n,m;
     9 
    10 int Find(int x){
    11     if(dis[x]>0) return dis[x];
    12     
    13     if(x==fa[x]) return 0;
    14     else return dis[x]=Find(fa[x])+1;
    15 }
    16 void init_(){
    17     memset(dis,0,sizeof(dis));
    18     for(int i=1;i<=n;i++) fa[i]=i;
    19 }
    20 int main(){
    21 //    freopen("01.in","r",stdin);
    22     while(scanf("%d%d",&n,&m)==2&&n>0&&m>0){
    23         init_();
    24         for(int i=1;i<n;i++){
    25             int u,v;
    26             scanf("%d%d",&u,&v);
    27             fa[v]=u;
    28         }
    29         while(m--){
    30             int u,v;
    31             scanf("%d%d",&u,&v);
    32             
    33             if(Find(u)<=Find(v))puts("lxh");
    34             else puts("pfz");
    35         }
    36     }
    37     return 0;
    38 }

    谁离根近谁胜利

    之前写了个dfs最短路不知道为什么错了,待定!!!

    结论大概是初始化有问题,待改!!!

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    ThinkPHP实现定时任务
    VUE 父子组件之间通信传值 props和 $emit,事件触发传值ref,以及兄弟组件之间的通信传值 eventBus
    JS链接转换为二维码
    VUE 动态切换列表active样式
    微信内置浏览器video标签自动全屏的问题
    JS监听video视频播放时间
    JS数据统计表 highcharts.js的运用
    JS 自动返回每个月的天数
    JS 一键复制插件应用 和 原生实现
    JS enter键一键登录
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5905708.html
Copyright © 2011-2022 走看看