题目描述
题解
题目中有多个生产者,考虑建一个虚点连向所有的生产者,这样保证了图连通。显然我们要按照拓扑序处理每个节点。
一个生物死亡只有当且仅当所有指向它的生物死亡,如果它的入度为$1$比较好处理,但如果大于$1$呢?
让捕食者向被捕食者再建一条边,当遍历到一个捕食者有多条连向它的被捕食者的边时,我们可以让这个捕食者直接向它的所有被捕食者的最近公共祖先连一条边。因为它们的最近公共祖先死亡了它们会全部死亡,所以连向被捕食者的所有边与连向它们最近公共祖先的边是等价的,这样我们就保证了图成为一棵树。
如图
观察发现小强向牛和羊都有连边,牛和羊的最近公共祖先是草,这表明草死亡了牛和羊都会死亡,所以小强也会死亡。所以可以直接让小强向草连一条边。
最后只需要统计每个节点的子树大小,减去自己的$1$即可
Code
1 |
|