您的位置:首页 > 其它

南邮 OJ 1080 悄悄话游戏

2015-08-04 10:36 204 查看

悄悄话游戏

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte

总提交 : 356            测试通过 : 175 


比赛描述

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

(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

题目来源

算法与数据结构设计2009

#include<iostream>
#include<vector>
using namespace std;

struct people{
int hearNo;
int tellNo;
};
int main(){
int N,n,t,m,i,j;
vector<people> peoples;
cin>>N;
while(N--){
peoples.clear();
cin>>n>>t>>m;
peoples.resize(n);
while(m--){
cin>>i>>j;
peoples[i].tellNo +=1;
peoples[j].hearNo +=1;
}
for(i=0;i<n;++i){
if(peoples[i].tellNo!=2 && peoples[i].tellNo!=0){
break;
}
if(i!=t && peoples[i].hearNo!=1){
break;
}
}
if(i==n){
cout<<"Success"<<endl;
}else{
cout<<"Failure"<<endl;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息