170904 通信网络 ccf

柔情只为你懂 2021-10-29 10:04 376阅读 0赞

参考

https://www.cnblogs.com/gf-fish/p/7745154.html

思路

dfs寻找与某点相连的所有点+vector容器提高效率

(不使用vector时只有60分,运行超时)

实现

ContractedBlock.gif ExpandedBlockStart.gif

  1. 1 #include<bits/stdc++.h>
  2. 2
  3. 3 using namespace std;
  4. 4
  5. 5 #define MAXN 1005
  6. 6
  7. 7 vector<int> path[MAXN];
  8. 8 int vist[MAXN];
  9. 9 int ans[MAXN][MAXN];
  10. 10
  11. 11 int dfs(int a,int b){
  12. //从b开始深搜寻找与a相通的点
  13. 12 ans[a][b]=1;
  14. 13 ans[b][a]=1;
  15. 14 vist[b]=1;
  16. 15 for(int j=0;j<path[b].size();j++){
  17. 16 if(vist[path[b][j]]==0){
  18. 17 dfs(a,path[b][j]);
  19. 18 }
  20. 19 }
  21. 20 }
  22. 21
  23. 22 int main()
  24. 23 {
  25. 24 memset(ans,0,sizeof(ans));
  26. 25 memset(vist,0,sizeof(vist));
  27. 26
  28. 27 int n,m,num=0;
  29. 28 cin>>n>>m;
  30. 29 int a,b;
  31. 30 for(int i=0;i<m;i++){
  32. 31 cin>>a>>b;
  33. 32 path[a].push_back(b);
  34. 33 }
  35. 34
  36. 35 for(int i=1;i<=n;i++){
  37. 36 memset(vist,0,sizeof(vist));
  38. 37 dfs(i,i);
  39. 38 }
  40. 39 for(int i=1;i<=n;i++){
  41. 40 int j=1;
  42. 41 for(;j<=n;j++){
  43. 42 if(ans[i][j]==0){
  44. 43 break;
  45. 44 }
  46. 45 }
  47. 46 if(j==n+1){
  48. 47 num++;
  49. 48 }
  50. 49 }
  51. 50 cout<<num;
  52. 51
  53. 52 return 0;
  54. 53 }

题目

问题描述

  某国的军队由 N个部门组成,为了提高安全性,部门之间建立了 M条通路,每条通路只能单向传递信息,即一条从部门 a到部门 b的通路只能由 ab传递信息。信息可以通过中转的方式进行传递,即如果 a能将信息传递到 bb又能将信息传递到 c,则 a能将信息传递到 c。一条信息可能通过多次中转最终到达目的地。
  由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在。只有当两个部门之间可以直接或间接传递信息时,他们才彼此知道对方的存在。部门之间不会把自己知道哪些部门告诉其他部门。
RequireFile.do_fid_yHg9gf9q
  上图中给了一个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

样例输出

2

样例说明

  部门1和部门4知道所有其他部门的存在。

评测用例规模与约定

  对于30%的评测用例,1 ≤ N ≤ 10,1 ≤ M ≤ 20;
  对于60%的评测用例,1 ≤ N ≤ 100,1 ≤ M ≤ 1000;
  对于100%的评测用例,1 ≤ N ≤ 1000,1 ≤ M ≤ 10000。

转载于:https://www.cnblogs.com/Gru-blog/p/11290948.html

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读

    相关 网络通信模型

    五种IO模型 阻塞IO、非阻塞IO、IO复用、信号驱动、异步IO 五种IO模型的目的都是为了提升服务端并行处理的连接数量 阻塞IO 如果远程服务端数据没有准备好

    相关 网络通信

    网络通信实现的两种方式: 1.基于TCP协议实现通信:面向连接的,提供可靠传输,但传输效率比较低,开销比较大 2.基于UDP协议实现通信:传输效率高,开销小,但不提供

    相关 网络通信

    最近看到网络通信的讲解,总结下来分享一下。 [网络通信流程][Link 1] 互联网的本质是一系列网络协议。网络协议的目标就是将全世界每台电脑上的每个应用程序

    相关 CCF 无线网络

    一、试题 问题描述   目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上。任何两个无线路由器只要距离不超过 r 就能互相建立网络连接。

    相关 CCF 网络延时

    一、试题 问题描述   给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为1的交换机为根交换机