• 5-201709-4-通信网络


    试题编号: 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。
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include <cmath>
    using namespace std;
    int tj[1005][1005];
    vector <int> mp[1005];
    int visit[1005];
    
    void dfs(int s, int de){
    	tj[de][s] = 1;
    	tj[s][de] = 1;
    	int len = mp[s].size();
    	for(int i = 0; i < len; i++){
    		int x = mp[s][i];
    		if(!visit[x]){
    			visit[s] = 1;
    			dfs(x, de);
    //			visit[x] = 0; //这个必须要重复访问,需要建立任意点间通信 
    		}
    	}
    }
    
    int main(){
    	int n, m, x, y;
    	cin >> n >> m;
    	for(int i = 0; i < m; i++){
    		cin >> x >> y;
    		mp[x].push_back(y);		
    	}
    	int ct = 0;
    	for(int i = 1; i <= n; i++){
    		memset(visit, 0 , sizeof(visit));
    		dfs(i, i);
    	}
    	for(int i = 1; i <= n; i++){
    		for(int j = 1; j <= n; j++){
    			if(tj[i][j] == 0 && i != j){
    				ct--;
    				break;
    			}
    		}
    		ct++;
    	}
    	cout << ct << endl;
    	return 0;
    }
    

      

  • 相关阅读:
    USB Device Finder
    Delphi Interfaces
    Why we need interfaces in Delphi
    PostQuitMessage, PostThreadMessage( WM_QUIT )
    state与status的区别
    SQLSERVER监控复制并使用数据库邮件功能发告警邮件
    干货分享:SQLSERVER使用裸设备
    SQLSERVER truncate table之后是否会重置表的自增值
    配置SQL Server去使用 Windows的 Large-Page/Huge-Page allocations
    SQLSERVER 数据库性能的的基本
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/9652029.html
Copyright © 2020-2023  润新知