题目名称 481. 罪犯问题D
输入输出 criminald.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatar.Xmz 于2010-10-18加入
开放分组 全部用户
提交状态
分类标签
图论 搜索法
分享题解
通过:6, 提交:30, 通过率:20%
Gravatar.Xmz 100 0.380 s 12.14 MiB C++
GravatarAchilles 100 0.507 s 3.62 MiB Pascal
Gravatar苏轼 100 0.714 s 0.60 MiB C++
Gravatardonny 100 0.988 s 69.24 MiB Pascal
GravatarTBK 100 1.029 s 1.49 MiB C++
GravatarQhelDIV 100 1.060 s 3.66 MiB C++
GravatarOo湼鞶oO 40 0.369 s 95.72 MiB C++
GravatarAchilles 30 1.034 s 3.93 MiB Pascal
GravatarAchilles 20 1.447 s 3.97 MiB Pascal
GravatarAchilles 20 1.449 s 3.97 MiB Pascal
本题关联比赛
10.10.18noip模拟
关于 罪犯问题D 的近10条评论(全部评论)

481. 罪犯问题D

★☆   输入文件:criminald.in   输出文件:criminald.out   简单对比
时间限制:1 s   内存限制:128 MiB

有N个嫌犯,镇长在审问他们,审问过程中不知道哪个人会突然说出来句话,说的话形式有两种,“***是罪犯”,“***不是罪犯”。已知罪犯说的都是假话,不是罪犯的说的都是真话(每人说的话均不指自己)。且因为见过M个人的通缉令,镇长可是确定这M个人是罪犯。通过这些情况可推断出别人是不是罪犯。现在镇长会在审问过程中随时询问作为副手的你,“***是不是罪犯?”,请你设计程序回答“Yes”,“No”或者“Unknown”。

【输入格式】

    第一行,两个整数N,M,含义如题目描述所示。

第二行,M个整数,第i个整数Ti表示编号Ti的嫌犯确定是罪犯。

接下来每行开头有一个大写字母:

若为“S”,表示某嫌犯说话了,接下来有两个整数A,B,若B大于零,表示编号A的嫌犯说“B号是罪犯”;若B小于零,表示编号为A的嫌犯说“-B号不是罪犯”。

若为“A”,表示镇长询问你了,接下来有一个整数X,表示镇长询问你“X号是不是罪犯?”,是则回答“Yes”,不是则回答“No”,在当前已知情况下无法确定则回答“Unknown”。

若为E,表示审问结束。

【输出格式】

假设询问有K个,则输出有K行,对于每一个询问,回答“Yes”,“No”或者“Unknown”。

【样例输入】

3 1

1

A 3

S 1 3

A 3

S 3 -2

A 2

A 1

E

【样例输出】

Unknown

No

No

Yes

【数据规模】

对于30%的数据,N<=1000,S与A数目和<=10000,S:A约为10:3;

对于100%的数据,N<=50000,1<=M<=N, S与A数目和<=200000,S:A约为1:3;

数据保证嫌犯说的话不存在矛盾.

 

by kily