zoukankan      html  css  js  c++  java
  • 1242. Werewolf(dfs)

    1242

    简单dfs 往孩子方向搜一遍 父母方向搜一遍 输入还搞什么字符串。。

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cstdlib>
     6 #include<vector>
     7 using namespace std;
     8 vector<int>fa[1010];
     9 vector<int>ch[1010];
    10 int u,v,q[1010];
    11 int w[1010],vis1[1010],vis2[1010],o;
    12 void dfs1(int u)
    13 {
    14     int i;
    15     for(i = 0 ; i < (int)fa[u].size() ; i++)
    16     {
    17         int v = fa[u][i];
    18         if(!vis1[v])
    19         {
    20             vis1[v] = 1;
    21             dfs1(v);
    22         }
    23     }
    24 }
    25 void dfs2(int u)
    26 {
    27     int i;
    28     for(i = 0 ; i < (int)ch[u].size() ; i++)
    29     {
    30         int v = ch[u][i];
    31         if(!vis2[v])
    32         {
    33             vis2[v] = 1;
    34             dfs2(v);
    35         }
    36     }
    37 }
    38 int main()
    39 {
    40     int i,j,n;
    41     char s1[20],s2[20];
    42     scanf("%d",&n);
    43     while(cin>>s1)
    44     {
    45         if(strcmp(s1,"BLOOD")==0)
    46         break;
    47         cin>>s2;
    48         u = atoi(s1);
    49         v = atoi(s2);
    50         fa[u].push_back(v);
    51         ch[v].push_back(u);
    52     }
    53     int g = 0;
    54     while(scanf("%d",&j)!=EOF)
    55     {
    56         g++;
    57         q[g] = j;
    58     }
    59     for(i = 1; i <= g ; i++)
    60     {
    61         if(!vis1[q[i]])
    62         {
    63             vis1[q[i]] = 1;
    64             dfs1(q[i]);
    65         }
    66     }
    67     for(i = 1; i <= g ; i++)
    68     {
    69         if(!vis2[q[i]])
    70         {
    71             vis2[q[i]] = 1;
    72             dfs2(q[i]);
    73         }
    74     }
    75     for(i = 1; i <= n ;i++)
    76     if(!vis2[i]&&!vis1[i])
    77     {
    78         o++;
    79         w[o] = i;
    80     }
    81     if(!o)
    82     printf("0
    ");
    83     else
    84     {
    85         for(i = 1; i < o ; i++)
    86         printf("%d ",w[i]);
    87         printf("%d
    ",w[o]);
    88     }
    89     return 0;
    90 }
    View Code
  • 相关阅读:
    Oracle Dataguard管理命令(logical standby)
    RAC 主库配置单实例ADG
    基于参数shared_pool_reserved_size进一步理解共享池shared pool原理
    线性表的本质和操作
    类族结构的进化
    顶层父类的创建
    异常类的构建——5个子类构建
    异常类的构建——顶层父类Exception的实现
    智能指针示例
    泛型编程简介
  • 原文地址:https://www.cnblogs.com/shangyu/p/3353048.html
Copyright © 2011-2022 走看看