zoukankan      html  css  js  c++  java
  • 通信网络 ccf

    试题编号: 201709-4
    试题名称: 通信网络
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由ab传递信息。信息可以通过中转的方式进行传递,即如果a能将信息传递到bb又能将信息传递到c,则a能将信息传递到c。一条信息可能通过多次中转最终到达目的地。
      由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在。只有当两个部门之间可以直接或间接传递信息时,他们才彼此知道对方的存在。部门之间不会把自己知道哪些部门告诉其他部门。

      上图中给了一个4个部门的例子,图中的单向边表示通路。部门1可以将消息发送给所有部门,部门4可以接收所有部门的消息,所以部门1和部门4知道所有其他部门的存在。部门2和部门3之间没有任何方式可以发送消息,所以部门2和部门3互相不知道彼此的存在。
      现在请问,有多少个部门知道所有N个部门的存在。或者说,有多少个部门所知道的部门数量(包括自己)正好是N
    输入格式
      输入的第一行包含两个整数NM,分别表示部门的数量和单向通路的数量。所有部门从1到N标号。
      接下来M行,每行两个整数ab,表示部门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。
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<queue>
     5 
     6 #define INF 1000000000
     7 
     8 using namespace std;
     9 
    10 vector<int> v[1100];
    11 int isConnected[1100][1100];
    12 int vis[1100];
    13 
    14 void dfs(int src, int cur)
    15 {
    16     vis[src] = 1;
    17     isConnected[src][cur] = isConnected[cur][src] = 1;
    18     
    19     for(int i = 0; i < v[src].size(); ++i)
    20     {
    21         if(!vis[v[src][i]])
    22         {
    23             dfs(v[src][i], cur);
    24         }
    25             
    26     }
    27 }
    28 
    29 int main()
    30 {
    31      int n, m;
    32      scanf("%d%d", &n, &m);
    33      for(int i = 1; i <= m; ++i)
    34      {
    35          int a, b;
    36          scanf("%d%d", &a, &b);
    37          v[a].push_back(b);
    38      }
    39     
    40     for(int i = 1; i <= n; ++i)
    41     {
    42         memset(vis, 0, sizeof(vis));
    43         dfs(i, i);
    44     }
    45     
    46     int ans = 0;
    47     for(int i = 1; i <= n; ++i)
    48     {
    49         int j; 
    50         for(j = 1; j <= n; ++j)
    51         {
    52             if(!isConnected[i][j])
    53                 break;
    54         }
    55         if(j == n+1)
    56             ++ans;
    57         
    58     }
    59     
    60     printf("%d", ans);
    61     
    62     
    63     return 0;
    64 }
  • 相关阅读:
    stenciljs 学习四 组件装饰器
    stenciljs 学习三 组件生命周期
    stenciljs 学习二 pwa 简单应用开发
    stenciljs ionic 团队开发的方便web 组件框架
    stenciljs 学习一 web 组件开发
    使用npm init快速创建web 应用
    adnanh webhook 框架 hook rule
    adnanh webhook 框架 hook 定义
    adnanh webhook 框架request values 说明
    adnanh webhook 框架execute-command 以及参数传递处理
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/11516209.html
Copyright © 2011-2022 走看看