题目名称 1387. liars
输入输出 liars.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcqw 于2013-07-10加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:0, 提交:1, 通过率:0%
Gravatarclearday 0 7.308 s 6.88 MiB C++
本题关联比赛
20130711
关于 liars 的近10条评论(全部评论)

1387. liars

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

【题目描述】


有n个人,编号分别为1,2,…,n。这n个人中每个人不是诚实者就是说谎者,并且每个人都知道下一个人的身份(即第k个人知道第k+1个人的身份,1<=k<n,且第n个人知道第1个人的身份)。现在已知每个人对他下一个人的身份的判断,并且说谎者的人数不超过t,问哪些人一定是说谎者。注意,诚实者给出的判断一定是正确的,但说谎者给出的判断是不确定的,可能正确也可能错误。


【输入格式】


第一行一个整数T,表示数据个数。

下面接T组数据,每组数据两行。

第一行为两个正整数n和t,表示一共有n个人,且说谎者人数不超过t。

第二行为n个整数,每个数为0或1。第i个数若为0,则表示第i个人判断下一个人为诚实者;

若为1,则表示第i个人判断下一个人为说谎者。


【输出格式】


每组数据输出一行,每行两个整数。第一个整数表示一定是说谎者的人的个数,第二个数表示一定是说谎者的人中,编号最小的人的编号。若第一个数是0,则第二个数也为0。(若定义集合S={k|第k个人一定是说谎者},那么第一个数就是|S|,第二个数就是S中最小的数。若S为空集则第二个数为0)


【样例输入】

3 5 2 0 1 1 0 0 7 2 0 0 1 0 0 1 1 9 8 1 0 0 0 0

【样例输出】

1 3 2 4 0 0