[解答]CCF-通信网络-2017
来源:互联网 发布:mac存储图片快捷键 编辑:程序博客网 时间:2024/06/03 08:22
CFF-通信网络-2017
一个朋友问的题目,在这做一下笔记
算法思路:
1.对每一个点都进行一次深搜遍历,看是否能把所有的点都到达一遍
2.用visited去标记每一次的深搜过程中走过的点,避免重复走(有可能进入死循环)
3.用map作为通路记录(当然也可以用vector<vector<int>>
来记录每一起始点的所有能到达的点)
4.ans表示能遍历全部点的点的数量。
5.know[i][j] 表示的是i知道j
6.THIS表示是,当前用于深搜的点的起始点编号。(因为,题目说了知道能相互通信(无论是间接还是直接的)就可以知道彼此)
#include <iostream>#include <cstring>using namespace std;bool map[1024][1024];bool know[1024][1024];bool visited[1024]; int ans, n, THIS;void dfs(int now) { if (visited[now]) { return; } know[THIS][now] = know[now][THIS] = visited[now] = true; for (int i = 1; i <= n; ++i) { if (!visited[i] && map[now][i]){ dfs(i); } }}int main(){ int m, b, e; cin >> n>> m; memset(map, false,sizeof(map)); memset(know, false,sizeof(know)); for(int i = 0; i < m; ++i){ cin >> b>> e; map[b][e] = true; } ans = 0; for (int i = 1; i <= n; ++i) { memset(visited, false, sizeof(visited)); THIS = i; dfs(i); } bool is; for (int i = 1; i <= n; ++i) { is = true; for (int j = 1;j <= n && is; ++j) { is = is && know[i][j]; } if (is) ans++; } cout << ans;}
最后,给我的公众号拉一波关注!
本人中大一肥宅,欢迎大家关注,请扫下面的二维码
如果有什么疑问,也可以直接在公众号后台询问。
您的问题,很有可能会被像这样给出解答
阅读全文
2 1
- [解答]CCF-通信网络-2017
- CCF认证2017-09 通信网络
- ccf-2017094-通信网络
- CCF 通信网络
- 201709-4 通信网络 ccf
- CCF 201709-4 通信网络
- CCF 201709-4 通信网络
- CCF 201709-4 通信网络
- ccf 2017-09-04 通信网络 图的遍历
- ccf 201709-4 通信网络 BFS遍历
- CCF 201709-4 通信网络 Java
- CCF-CSP 通信网络 JAVA 201709-4 100分
- CCF考试——201709-4通信网络
- [CCF CSP201709-4通信网络]缩点+拓扑+bitset
- ccf模拟题 201709-4 通信网络(缩点,dfs)
- 【CCF】网络延时
- ccf 网络延时(dfs)
- ccf 网络延时
- 自己写的JAVA实现登录限制原理(SSM框架)
- Tensorflow 使用slim框架下的分类模型进行分类
- FFMPEG录屏软件开发之最终完善
- (洛谷)【P1162】填涂颜色 [广度搜索]
- Ridge回归、Lasso回归、坐标下降法、最小角回归
- [解答]CCF-通信网络-2017
- Spring DI 依赖注入案例(带参数构造方法依赖注入、setter方法依赖注入、p名称空间注入)
- 主机ping不通Virtualbox里的虚拟机
- codeforces 676A Nicholas and Permutation
- 中国“互联网+”数字经济峰会杭州召开 描绘数字经济新版图
- 微软承诺Windows 10一年两更,从Redstone 3开始
- 联合IBM,安翰医疗胶囊机器人能否练就火眼金睛?
- 观点 | 智能网联汽车的人机交互体验与安全策略
- “光语者"谢崇进:我对摩尔定律的承诺