zoukankan      html  css  js  c++  java
  • POJ 1330

    http://poj.org/problem?id=1330

    题意:给你一棵树的上的两个点,要你求这两个点的最近的父亲节点。

    第一行的是m案例数

    第二行给你个N,代表有N-1种父子关系,其中a b,a是b的父亲。

    第N行就是要你求这两个点的最近的父亲节点。

    思路:很简单,不用discuss里面的那些,就直接一个递归寻找出第一个点的所以父亲节点,并做好标记,然后用递归寻找第二个点的父亲节点,如果碰到了标记的话,那么这个点就是他们的最近的那个父亲节点。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define l 100100
     4 
     5 bool mark[l];
     6 int belg[l],ans,flog;
     7 
     8 int bfs(int x)
     9 {
    10     if(mark[x]) {
    11         mark[x]=false;
    12         if(!belg[x]) return 0;
    13         bfs(belg[x]);
    14     }
    15     return 0;
    16 }
    17 int bfs1(int x)
    18 {
    19     if(belg[x]&&mark[x]) bfs1(belg[x]);
    20     if(!mark[x]&&!flog){
    21         ans=x;
    22         flog=1;
    23         return 0;
    24     }
    25     return 0;
    26 }
    27 
    28 int main()
    29 {  
    30     int m,n,a,b;
    31     scanf("%d",&m);
    32     while(m--)
    33     {
    34         scanf("%d",&n);
    35         memset(belg,0,sizeof(belg));
    36         memset(mark,true,sizeof(mark));
    37         for(int i=0;i<n-1;i++)
    38         {
    39             scanf("%d%d",&a,&b);
    40             belg[b]=a;
    41         }
    42         scanf("%d%d",&a,&b);
    43         flog=0;
    44         bfs(a);
    45         bfs1(b);
    46         printf("%d
    ",ans);
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    Subway POJ
    Invitation Cards POJ
    Cow Contest POJ
    MPI Maelstrom POJ
    Wormholes POJ
    Currency Exchange POJ
    Codeforces Round #608 (Div. 2) D Portals
    AcWing 1052. 设计密码
    AcWing 1058. 股票买卖 V 状态机模型dp
    AcWing 1057. 股票买卖 IV 状态机模型dp
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5707622.html
Copyright © 2011-2022 走看看