poj2186
题意:
每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。
题解:
这道题缩点还是挺明显的
先用tarjan缩点(显然在环上的点要么全部是答案要是全部不是)
然后判断一下图是否联通(不管边的方向)
要是不连通那么一定是无解的
要是联通就数出度为0的点有几个
如果有且仅有一个就满足条件(其实tanjan的题好多都是根据入度和出度来判断性质的)
不过还是来证明一下吧
首先,证必要性:如果有两个点出度为0,那么这两个点中的任意一个点都不被另一个点欣赏
然后,证充分性:如果只有一个点出度为0,那么我们考虑把它拿到根处
显然他的儿子一定是都指向他的(因为它出度为0)
那考虑他儿子的儿子,如果是从儿子指向儿子的儿子
那么其下面一定有一个点出度为0了