http://blog.csdn.net/zyy_1998/article/details/78334496

试题编号: 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<stdio.h>
#include<vector>
#include<string.h>
using namespace std;
int node,side;
vector <int>graph[1005];
int vis[1005];
int flag[1005][1005]={0};//是否能从a到b
void dfs(int a,int b)//把能到达的点的flag置为1
{
vis[a]=1;
flag[a][b]=flag[b][a]=1;//可到达自身
for(int j=0;j<graph[a].size();j++)
{
if(!vis[graph[a][j]])//没有访问过且能访问到的
{ dfs(graph[a][j],b);
}
}
return ;
}
int main()
{ int i,j;
int counter=0;
cin>>node>>side;
int a,b;
for(int i=0;i<=node;i++)
graph[i].clear();
for(i=1;i<=side;i++)
{
scanf("%d%d",&a,&b);
graph[a].push_back(b);
} for(i=1;i<=node;i++)
{
memset(vis,0,sizeof(vis));
dfs(i,i);
}
for(i=1;i<=node;i++)
{
for(j=1;j<=node;j++)
{
if(!flag[i][j]||!flag[j][i])
break;
}
if(j==node+1)counter++;
}
printf("%d\n",counter);
return 0;
}

  

 #include<iostream>
#include<stdio.h>
#include<vector>
#include<string.h>
using namespace std;
int node,side;
vector <int>graph[];
int vis[];
int flag[][]={};//是否能从a到b
void dfs(int a,int b)//把能到达的点的flag置为1
{
vis[a]=;
flag[a][b]=flag[b][a]=;//可到达自身
for(int j=;j<graph[a].size();j++)
{
if(!vis[graph[a][j]])//没有访问过且能访问到的
{
dfs(graph[a][j],b);
}
}
return ;
}
int main()
{ int i,j;
int counter=;
cin>>node>>side;
int a,b;
for(int i=;i<node;i++)
graph[i].clear();
for(i=;i<side;i++)
{
scanf("%d%d",&a,&b);
graph[a].push_back(b);
} for(i=;i<node;i++)
{
memset(vis,,sizeof(vis));
dfs(i,i);
}
for(i=;i<node;i++)
{
for(j=;j<node;j++)
{
if(!flag[i][j]||!flag[j][i])
break;
}
if(j==node)counter++;
}
printf("%d\n",counter);
return ;
}

csp 通信网络的更多相关文章

  1. CSP 通信网络(201709-4)

    问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息.信息可以通过中转的方式进行传递,即如果a能将信息 ...

  2. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

  3. ccf认证 201709-4 通信网络 java实现

    试题编号:                                                               201709-4 试题名称: 通信网络 时间限制: 1.0s 内 ...

  4. 小dai浅谈通信网络(一)——引子

    说起通信网络,首先来看一个场景: 场景模式: 小明和小刚在闹市碰面. 小明对小刚大声喊道:"小刚,你好啊!" 小刚摇手答到:"你好,小明!" 就这么几句简单的话 ...

  5. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  6. CSP 通信顺序进程

    communicating sequential processes CSP 通信顺序进程 C.A.R.Hoare 1979 CSP是一种用来描述并行系统交互模式的形式语言,最早由C.A.R.Hoar ...

  7. 通信网络 2G 3G 4G 和路由器2.4G 5G的区分和关系

    通信网络 2G 3G 4G 和路由器2.4G 5G的区分和关系 作者:魔仙圆缘链接:https://www.zhihu.com/question/34076333/answer/57850104来源: ...

  8. CCF CSP 201503-4 网络延时

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-4 网络延时 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机 ...

  9. PLC通信网络

    PLC通信网络的分层 PLC通信网络大致可分为3层,管理层,单元层以及现场执行(AS-I)层.如下图所示. 在PLC通信网络的三层架构中,管理层,通信方式包括MPI,工业以太网(Profinet)以及 ...

随机推荐

  1. linux 中的定时任务crontab使用方法

    linux 中的定时任务crontab使用方法: 切换到root用户,sudo su root (可以设置成不需要输入密码) sudo su - (需要输入当前帐号的密码才能进入.) crontab ...

  2. web前端----JavaScript的DOM(二)

    前面在DOM一中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele_p ...

  3. 01: socket模块

    网络编程其他篇 目录: 1.1 socket理论部分 1.2 socket处理单个连接 和 同时接受多个连接 1.3 socket实现远程执行命令,下载文件 1.4 通过socket实现简单的ssh ...

  4. 20145303刘俊谦 Exp8 Web基础

    20145303刘俊谦 Exp8 Web基础 基础问题回答 1.什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素,表单 ...

  5. noip2016普及组题解和心得

    前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...

  6. C# string字节数组转换

    string转byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转string:string ...

  7. 在linux桌面上显示图标

    把应用程序的图标添加到桌面上 左图显示了把应用程序的图标添加到桌面上的两种方法,哪种更好看? 想要把应用程序图标添加到桌面上,请先确保已设置了在桌面上显示图标,方法是: 1.安装gnome-tweak ...

  8. 九数组分数|2015年蓝桥杯B组题解析第五题-fishers

    九数组分数 1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. #include <stdio.h> void t ...

  9. UVa 12627 奇怪的气球膨胀(分治)

    https://vjudge.net/problem/UVA-12627 题意:一开始有一个红气球.每小时后,一个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球.如图所示分别是经过0 ...

  10. redis nginx session tomcat

    Redis解决session共享 http://lyl-zsu.iteye.com/blog/2408292 http://zx10103326.iteye.com/blog/2244195 http ...