本题难度较大,需要前置知识强连通分量。
考虑一个人u暗恋另外一个人v,则我们让v连一条有向边到u,表示u属于v的子节点,此时可以构成一个有向图。
然而有可能出现三角恋的情况,即成环,对于成环的情况,在环上只要请了任意一个人来,那环上其它所有点都必须来,所以这种情况我们可以将其缩点为一个人。
缩点需要采用强连通分量的tarjan算法,可以将环缩成一个点。
小美有n个朋友,她准备请其中一些朋友来吃饭。 其中有一些朋友有暗恋关系:假设a暗恋b,那么小美带上b的时候a也必须去,否则a就会不开心。 小美想知道,一共有多少种不同的请客方案可以让每个人都开心?由于答案可能过大,请对109+7取模。
第一行输入两个正整数n,m,代表小美的朋友数量、暗恋的关系数量。 接下来的m行,每行输入两个正整数u,v,代表第u个人暗恋第v个人。 1≤n,m≤105 1≤u,v≤n 保证每个人最多只会暗恋一个人。
一个整数,代表小美的请客方案数。
输入
2 1
1 2
输出
2
说明
两个方案:只请 1 号,或者同时请 1 号和 2 号。
请注意,不能只请 2 号,否则 1 号会不开心。
输入
3 3
1 2
2 3
3 1
输出
1
说明
显然 3 个人必须全部请客,否则总有人会不开心。