csp 通信网络
http://blog.csdn.net/zyy_1998/article/details/78334496
| 试题编号: | 201709-4 |
| 试题名称: | 通信网络 |
| 时间限制: | 1.0s |
| 内存限制: | 256.0MB |
| 问题描述: |
问题描述
某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息。信息可以通过中转的方式进行传递,即如果a能将信息传递到b,b又能将信息传递到c,则a能将信息传递到c。一条信息可能通过多次中转最终到达目的地。
由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在。只有当两个部门之间可以直接或间接传递信息时,他们才彼此知道对方的存在。部门之间不会把自己知道哪些部门告诉其他部门。 上图中给了一个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。 |
#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 通信网络的更多相关文章
- CSP 通信网络(201709-4)
问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息.信息可以通过中转的方式进行传递,即如果a能将信息 ...
- CCF CSP 201709-4 通信网络
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...
- ccf认证 201709-4 通信网络 java实现
试题编号: 201709-4 试题名称: 通信网络 时间限制: 1.0s 内 ...
- 小dai浅谈通信网络(一)——引子
说起通信网络,首先来看一个场景: 场景模式: 小明和小刚在闹市碰面. 小明对小刚大声喊道:"小刚,你好啊!" 小刚摇手答到:"你好,小明!" 就这么几句简单的话 ...
- 浅谈通信网络(三)——TCP/IP协议
简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...
- CSP 通信顺序进程
communicating sequential processes CSP 通信顺序进程 C.A.R.Hoare 1979 CSP是一种用来描述并行系统交互模式的形式语言,最早由C.A.R.Hoar ...
- 通信网络 2G 3G 4G 和路由器2.4G 5G的区分和关系
通信网络 2G 3G 4G 和路由器2.4G 5G的区分和关系 作者:魔仙圆缘链接:https://www.zhihu.com/question/34076333/answer/57850104来源: ...
- CCF CSP 201503-4 网络延时
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-4 网络延时 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机 ...
- PLC通信网络
PLC通信网络的分层 PLC通信网络大致可分为3层,管理层,单元层以及现场执行(AS-I)层.如下图所示. 在PLC通信网络的三层架构中,管理层,通信方式包括MPI,工业以太网(Profinet)以及 ...
随机推荐
- 利用构造函数对canvas里面矩形与扇形的绘制进行一个封装
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS之第三方库以及XCode插件介绍
前言 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上所有的商业项目 都会或多或少的使用到第三方库 Github上Star>100的开源库数量如下 可以看到JS以绝对的优势排名第一 ...
- C++ tinyXML的使用和字符编码转换
转载:http://jetyi.blog.51cto.com/1460128/761708/ 关于tinyxml使用的文档有很多(这篇文章就写的很好),这里仅提一下字符编码的转换问题,如果你不熟悉字符 ...
- windows下如何获取系统已存在的盘符 【c++】
#include <iostream> #include "classAh.h" #include <atlstr.h> using namespace s ...
- Python3基础 list 推导式 生成与已知列表等长度+元素为0的列表
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- linux下安装evernote国际版
一.背景 由于之前一直将笔记记录在evernote,因此现在转到linux下需要使用工具来记录笔记到evernote上 OS : Ubuntu 16.04 (xenial) 二.linux版everp ...
- 项目中同一个dll的x86和x64同时引用
<ItemGroup Condition=" '$(Platform)' == 'x86' "> <Reference Include="System. ...
- 项目梳理5——修改已生成.nuspec文件
xxxx.nuspec格式如下 <?xml version="1.0"?> <package > <metadata> <id>$i ...
- 不在同一主机:vsftpd+pam+mysql
配置环境:Centos7上的mariadb + Centos6上的vsftpd 一.安装所需要程序 1.安装vsftpd和pam_mysql(在centos6-->192.168.108.160 ...
- C++中的也能使用正则表达式----转载
转自:https://www.cnblogs.com/ittinybird/p/4853532.html, 以作笔记. 正则表达式Regex(regular expression)是一种强大的描述字符 ...