您的位置:首页 > 编程语言

剪刀石头布——杭电携程编程大赛 (预赛第二场)

2014-04-11 21:48 204 查看


剪刀石头布

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 0 Accepted Submission(s): 0



Problem Description

现有M个人一起玩剪刀石头布,以1-M编号,每人出一种,出过不再改变,但是我们并不知道它到底是哪一种。 (其中石头赢剪刀,剪刀赢布,布赢石头,一样则平)
裁判用两种说法对这M个人所构成的输赢关系进行描述: 
一:"1 A B",表示第A个人和第B个人出的一样。 
二:"2 A B",表示第A个人赢第B个人。 
裁判对M个人,用以上两种说法,连说N句话,其中有真的、也有假的。
一句话出现以下情况,就是假话,否则就是真话。 
1) 该句话与之前的某些真话冲突; 
2) 该句话中A或B比M大; 
3) 该句话表示A赢A。 

请根据给定的M和N,输出假话数。
其中(1 <= M <= 10,000),(0 <= N <= 10,000)




Input

第1行是一个自然数K,代表有K组数据。
每组数据以一个空行分隔,其中每组数据的第1行是两个自然数M、N,以空格分开。 
每组数据的第2行至N+1行,每行是三个自然数X,A,B,三个数之间用空格分开,X(1或2)表示说法的种类。




Output

每组数据对应一行,每行有一个整数,代表假话数。




Sample Input

3

43 11
1 4 3
2 3 3
1 4 1
1 4 4
2 3 3
1 2 2
2 1 4
1 1 1
2 1 4
2 3 4
2 3 2

66 9
2 3 1
2 4 4
2 1 2
2 4 3
2 4 2
2 2 3
1 3 2
1 2 1
1 1 1

6 7
2 3 7
2 1 2
2 4 4
1 2 1
1 3 2
1 2 3
2 1 3




Sample Output

5
4
3


【本文出自:/article/1582801.html

这道题属于并查集,还不是很会,可以参考点击打开链接,后续自己的代码会贴上来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: