#include<bits/stdc++.h>
using namespace std;
int a[100010];
char s[20];
int zhiren[100010];
vector<int>haoren[100010];
int sum=0;
void dfs(int x,int y,int flag)
{
    if(x==y)
        flag=1;//如果和被指认的人相同,则定为狼
    sum+=flag;//并且后面直接或间接认为刚才那个是狼的人是好人的人也都是狼
    for(int i=0;i<haoren[y].size();i++)
    {
        dfs(x,haoren[y][i],flag);//搜索认为指认他人是狼人的这个人是好人的人
    }
    return;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        sum=0;
        int n;
        scanf("%d",&n);
        memset(zhiren,0,sizeof(zhiren));
        for(int i=0;i<=n;i++)
        {
            haoren[i].clear();
        }
        for(int i=1;i<=n;i++)
        {
            scanf("%d%s",&a[i],s);
            if(s[0]=='v')
            {
                haoren[a[i]].push_back(i);//把认为a[i]是好人的人i放入向量中
            }
            else
            {
                zhiren[i]=a[i];//i认为a[i]是狼人
            }
        }
        for(int i=1;i<=n;i++)
        {
            if(zhiren[i])//找到第一个被认为是狼人的人
            {
                dfs(zhiren[i],i,0);//从这个人开始dfs
            }
        }
        printf("0 %d\n",sum);//所有人都是狼人的情况是成立的
    }
    return 0;
}

2018杭电多校第六场1009(DFS,思维)的更多相关文章

  1. 2018杭电多校第五场1002(暴力DFS【数位】,剪枝)

    //never use translation#include<bits/stdc++.h>using namespace std;int k;char a[20];//储存每个数的数值i ...

  2. 2018杭电多校第三场1003(状态压缩DP)

    #include<bits/stdc++.h>using namespace std;const int mod =1e9+7;int dp[1<<10];int cnt[1& ...

  3. 2017杭电多校第六场1008 Kirinriki

    传送门 Kirinriki Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  4. 2017杭电多校第六场1011Classes

    传送门 Classes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota ...

  5. 2017杭电多校第六场03Inversion

    传送门 Inversion Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  6. [2019杭电多校第六场][hdu6641]TDL

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6641 题意为求出最小的n,满足(f(n,m)-n)^n=k,其中f(n,m)为第m大的x,其中x满足g ...

  7. [2019杭电多校第六场][hdu6638]Snowy Smile(维护区间最大子段和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意为在一个平面上任意选择一个长方形,使得长方形内点权和最大. 因为长方形可以任意选择,所以上下 ...

  8. [2019杭电多校第六场][hdu6635]Nonsense Time

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6635 题意是说一开始所有数都冻结,第i秒会解冻第ki个数,求每秒状态下的最长上上升子序列长度. 这种题 ...

  9. 2019杭电多校第六场hdu6638 Snowy Smile(线段树+枚举)

    Snowy Smile 题目传送门 解题思路 先把y离散化,然后把点按照x的大小进行排序,我们枚举每一种x作为上边界,然后再枚举其对应的每一种下边界.按照这种顺序插入点,这是一个压维的操作,即在线段树 ...

随机推荐

  1. 用 CSS3 创建一个漂亮的多种色彩的菜单

    1. [图片] thumb.png ​2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" >    <hea ...

  2. 单机版 JedisUtil({基本操作封装工具类})【二】

    <!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...

  3. 分享知识-快乐自己:springboot之thymeleaf (1):简单的thymeleaf例子

    之前搞springboot时,发现spring很推荐thymeleaf,所以看了看学了学,感觉不错,做个笔记先. 做个简单和例子,项目是springboot,所以引入themeleaf相关包 pom. ...

  4. Shiro身份认证---转

    目录 1. Shro的概念 2. Shiro的简单身份认证实现 3. Shiro与spring对身份认证的实现 前言: Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境 ...

  5. codeforces 598E E. Chocolate Bar(区间dp)

    题目链接: E. Chocolate Bar time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  6. Leetcode 1002. Find Common Characters

    python可重集合操作 class Solution(object): def commonChars(self, A): """ :type A: List[str] ...

  7. eclipse IDE注释模板设置

    1.windows->preference—>java->code style->code template,弹出下图所示的界面.

  8. bzoj 3572: [Hnoi2014]世界树 虚树

    题目: Description 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界.在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平是使世界树能够生生 ...

  9. Android的Notification相关设置

    Android手机:三星Galaxy S6 Android版本:Android 7.0 Android系统自带的本地通知会从顶部Pop下来,用来提示用户有新的消息,然后在Notification栏中停 ...

  10. Oracle 12C 新特性之扩展数据类型(extended data type)

    Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...