描述
现在我们来玩一个游戏:传播“悄悄话”,规则如下:
(1)一个人发起“悄悄话”
(2)一个人在知道“悄悄话”时,要么保持沉默,不告诉任何人;要么在规定时间内将“悄悄话”及时告诉其他两个人,否则游戏失败。
(3)所有人最终都知道“悄悄话”
假设一个人在规定时间内至多将“悄悄话”告诉两个人;除发起人外,其他每个人只被告诉一次“悄悄话”。给定游戏的统计数据,请你判断游戏是否成功。
输入
第一行是一个正整数:测试用例数目,最多为3。之后,每个测试用例包括多行:
l 第1行给出两个整数(空格分割),前者表示游戏参与人数n,后者表示“悄悄话”的发起人t,在这个游戏中,参加人用整数序号表示,2≤n≤10001,0≤t≤n-1
l 第2行给出一个整数,表示“悄悄话”传播的次数m,0≤m≤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
#include<iostream> using namespace std; #define MAX 10002 int main() { int T,n,t,m,x,y,i; cin>>T; while(T--) { cin>>n>>t>>n; int a[MAX]={0}; int b[MAX]={0}; bool f=true; for(i=0;i<n;i++) { cin>>x>>y; a[x]++; b[y]++; } for(i=0;i<n;i++) { if(a[i]%2!=0) f=false; if(i==t) continue; else if(b[i]!=1) f=false; } if(f) cout<<"Success"<<endl; else cout<<"Failure"<<endl; } return 0; }