食物链
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。
A吃B, B吃C,C吃A。
现有N个动物,以1-N编号。
每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。
有人用两种说法对这N个动物所构成的食物链关系进行描述:
第一种说法是”1 X Y”,表示X和Y是同类。
第二种说法是”2 X Y”,表示X吃Y。
此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。
当一句话满足下列三条之一时,这句话就是假话,否则就是真话。
1) 当前的话与前面的某些真的话冲突,就是假话;
2) 当前的话中X或Y比N大,就是假话;
3) 当前的话表示X吃X,就是假话。
你的任务是根据给定的N和K句话,输出假话的总数。
输入格式
第一行是两个整数N和K,以一个空格分隔。
以下K行每行是三个正整数 D,X,Y,两数之间用一个空格隔开,其中D表示说法的种类。
若D=1,则表示X和Y是同类。
若D=2,则表示X吃Y。
输出格式
只有一个整数,表示假话的数目。
数据范围
1≤N≤50000,
0≤K≤100000
输入样例:
1 | 100 7 |
输出样例:
3
思想:
由于有a,b,c三种动物,$a -> b$, $b -> c$, $c -> a$,的这种关系,且题设也没告诉具体是哪种物种,所以三种情况全考虑
用0 ~ n - 1表示a,n ~ 2 n - 1表示b, 2 n ~ 3 * n - 1表示c
1 |
|
网络维修
电话线公司(TLC)正在建立一个新的电话电缆网络。它们连接了几个由1到N的整数编号的位置。
没有两个地方有相同的号码。线路是双向的,并且总是将两个地方连接在一起,
并且每个地方线路终止于电话交换机。每个地方都有一个电话交换机。它来自每个地方
可以通过线路到达其他地方,但它不需要是直接连接,它可以通过几次间接连接。
有时电源在某个地方发生故障,因而交换机无法运行。 TLC的官员意识到,在这种情况下,
除了故障的地方无法到达的之外,这也可能导致其他地方无法相互连接。
在这种情况下,我们会说地点(故障的地方)是至关重要的。
现在,官员正试图编写一个程序来查找所有这些关键位置的数量。帮助他们。
输入
输入文件由几个行块组成。每个块描述一个网络。在每个块的第一行中,存在N <100的位数。
接下来最多N行中的每一行包含一个地点的编号,后面跟有来自该地方的直线的一些地方的编号。
这些最多N行完全描述了网络,即,网络中两个地方的每个直接连接至少包含在一行中。一行中的所有数字都是分开的
一个。每个块以一条仅包含0的行结束。最后一个块只有一行,N = 0;
输出
输出包含除输入文件中的最后一个块之外的每个块,其中一行包含关键位置的数量。
样例输入
1 | 5 1 2 3 4 |
样例输出
1 | 1 |
提示
您需要确定一行的结尾。为了使其易于确定,在每行结束之前没有多余的空白。
1 |
|