“C语言“ 之 特工的单向通信网络

本文探讨了一个N位特工的单向通信网络问题,通过分析特工之间的信息传递路径,确定哪些特工能知悉所有其他特工的存在。给出了不同规模问题下适合的数据结构选择,如邻接矩阵和邻接表,并提供了适用于大规模问题的伪代码,算法时间复杂度为O(N^2)。
摘要由CSDN通过智能技术生成

       有一个由N位特工组成的情报网,为了防止暴露,特工之间建立了M条通信通路,每条通路只能单向传递信息,即一条从特工1到特工2的通路只能由12传递信息。信息可以中转,如下图所示,1发出的信息,可以通过2转发给4,也可以通过3转发给4。
  由于保密的原因,并不是所有特工之间都互相知道彼此的存在。只有当两个特工之间可以直接或间接传递信息时,他们才彼此知道对方的存在。

                      

       上图中给了一个4位特工的例子,图中的单向边表示通路。特工1可以将消息发送给所有部门,特工4可以接收所有部门的消息,所以特工1和特工4知道所有其他部门的存在。特工2和特工3之间没有任何方式可以发送消息,所以特工2和特工3互相不知道彼此的存在。
  现在请问,有多少个特工知道所有N位特工的存在。或者说,有多少个特工知道的特工数量(包括自己)正好是N。

输入格式

  输入的第一行包含两个整数N, M,分别表示特工的数量和单向通路的数量。所有特工从1到N标号。
  接下来M行,每行两个整数a, b,表示特工a到特工b有一条单向通路。

输出格式

  输出一行,包含一个整数,表示答案。

样例输入

4 4
    1 2
    1 3
    2 4
    3 4

样例输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值