倍增LCA - cool's Blog

[倍增LCA]bzoj2815(ZJOI2012)

2815: [ZJOI2012]灾难

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 872  Solved: 502
[Submit][Status][Discuss]

Description

阿米巴是小强的好朋友。
阿米巴和小强在草原上捉蚂蚱。小强突然想,如果蚂蚱被他们捉灭绝了,那
么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的
生态灾难。
学过生物的阿米巴告诉小强,草原是一个极其稳定的生态系统。如果蚂蚱灭
绝了,小鸟照样可以吃别的虫子,所以一个物种的灭绝并不一定会引发重大的灾
难。
我们现在从专业一点的角度来看这个问题。我们用一种叫做食物网的有向图
来描述生物之间的关系:
一个食物网有 N 个点,代表 N 种生物,如果生物 x 可以吃生物 y,那么从 y
x 连一个有向边。
这个图没有环
图中有一些点没有连出边,这些点代表的生物都是生产者,可以通过光合作
用来生存; 而有连出边的点代表的都是消费者,它们必须通过吃其他生物来生
存。
如果某个消费者的所有食物都灭绝了,它会跟着灭绝。
我们定义一个生物在食物网中的“灾难值”为,如果它突然灭绝,那么会跟
着一起灭绝的生物的种数。
给定一个食物网,你要求出每个生物的灾难值。

Input

输入文件 catas.in 的第一行是一个正整数 N,表示生物的种数。生物从 1
号到 N
接下来 N 行,每行描述了一个生物可以吃的其他生物的列表,格式为用空
格隔开的若干个数字,每个数字表示一种生物的标号,最后一个数字是 0 表示列
表的结束。

Output

输出文件 catas.out 包含 N 行,每行一个整数,表示每个生物的灾难值

Sample Input

5
0
1 0
1 0
2 3 0
2 0

Sample Output

4
1
0
0
0

HINT

 

50%的数据, N ≤ 10000
100%的数据, 1 ≤ N ≤ 65534
输入文件的大小不超过 1M。保证输入的食物网没有环。

 

继续阅读




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee