• 悄悄话游戏 NOJ 1080


    悄悄话游戏

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 339            测试通过 : 166 

    题目描述

    现在我们来玩一个游戏:传播“悄悄话”,规则如下:

    1)一个人发起“悄悄话”

    2)一个人在知道“悄悄话”时,要么保持沉默,不告诉任何人;要么在规定时间内将“悄悄话”及时告诉其他两个人,否则游戏失败。

    3)所有人最终都知道“悄悄话”

    假设一个人在规定时间内至多将“悄悄话”告诉两个人;除发起人外,其他每个人只被告诉一次“悄悄话”。给定游戏的统计数据,请你判断游戏是否成功。



    输入

    第一行是一个正整数:测试用例数目,最多为3。之后,每个测试用例包括多行:

    l       1行给出两个整数(空格分割),前者表示游戏参与人数n,后者表示“悄悄话”的发起人t,在这个游戏中,参加人用整数序号表示,2n≤100010tn-1

    l       2行给出一个整数,表示“悄悄话”传播的次数m0m≤10000

    l       m行,每行两个整数(空格分割),前者表示“悄悄话”的告诉人,后者表示“悄悄话”的被告诉人

    输出

    对于每个测试用例:

    l       游戏成功则输出“Success”,否则输出“Failure

    注意:输出部分的结尾要求包含一个多余的空行。

    样例输入

    2
    3 0
    2
    0 1
    0 2
    4 0
    3
    0 1
    1 2
    2 3

    样例输出

    Success
    Failure

    分析:定义两个数组a[],b[],前者用来存储每个人传悄悄话的次数,如果成功那么取值一定为2或0,后者用来记录每个人是否知道悄悄话(知道为1,不知道为0)。

    实现代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int num,t,n,ti;
    int a[10001+10];
    int b[10001+10];
    int main()
    {
        scanf("%d",&num);
        while(num--)
        {
            scanf("%d%d%d",&n,&t,&ti);
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            b[t]=1;
            for(int i=0;i<ti;i++)
            {
                int n1,n2;
                scanf("%d%d",&n1,&n2);
                a[n1]++;
                b[n2]=1;
            }
            int f=1;
            for(int i=0;i<n;i++)
            {
                if(a[i]!=2&&a[i]!=0)
                {
                    f=0;
                    break;
                }
                if(b[i]!=1)
                {
                    f=0;
                    break;
                }
            }
            if(f==0)
                printf("Failure
    ");
            else
                printf("Success
    ");
        }
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Android Canvas save() restore()
    Android Custom View
    Android Canvas drawArc()
    每日一记--2014.9.15
    每日一记--2014.9.14
    每日一记--2014.9.13
    每日一记--2014.9.12
    每天一记--2014.9.11
    每日一记,今天开始
    java中的Iterator和Iterable
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965490.html
Copyright © 2020-2023  润新知