luogu#P4455. [CQOI2018] 社交网络

    ID: 8482 远端评测题 1000ms 500MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2018重庆各省省选生成树向量构造

[CQOI2018] 社交网络

题目背景

当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分。通常,一个用户在社交网络上发布一条消息后,他的好友们也可以看见这条消息,并可能转发。转发的消息还可以继续被人转发,进而扩散到整个社交网络中。

题目描述

在一个实验性的小规模社交网络中我们发现,有时一条热门消息最终会被所有人转发。为了研究这一现象发生的过程,我们希望计算一条消息所有可能的转发途径有多少种。为了编程方便,我们将初始消息发送者编号为 11,其他用户编号依次递增。

该社交网络上的所有好友关系是已知的,也就是说对于 a,ba, b 两个用户,我们知道 aa 用户可以看到 bb 用户发送的消息。注意可能存在单向的好友关系,即 aa 能看到 bb 的消息,但 bb 不能看到 aa 的消息。

还有一个假设是,如果某用户看到他的多个好友转发了同一条消息,他只会选择从其中一个转发,最多转发一次消息。从不同好友的转发,被视为不同的情况。

如果用箭头表示好友关系,下图展示了某个社交网络中消息转发的所有可能情况。(初始消息是用户 11 发送的,加粗箭头表示一次消息转发)

答案对 104+710^4 + 7 取模。

输入格式

第一行有一个整数,表示用户的数量 nn
第二行有一个整数,表示好友关系数目 mm
接下来 mm 行,每行两个整数 a,ba, b,表示一组好友关系,即用户 aa 可以看到用户 bb 发送的信息。

输出格式

输出一行一个整数表示答案对 104+710^4 + 7 取模的结果。

4
7
2 1
3 1
1 3
2 3
3 2
4 3
4 2

6

提示

数据规模与约定

  • 对于 30%30\% 的数据,保证 n10n \leq 10
  • 对于 100%100\% 的数据,保证 1n2501 \leq n \leq 2501mn×(n1)1 \leq m \leq n \times (n - 1)1a,bn1 \leq a, b \leq n