通信网络

201709-4

  • 一看到题目分析了题意之后,我就想到用floyd算法来求解每一对顶点的最短路。如果一个点和任意一个点都有最短路(不为INF),那么这就是符合的一个答案。可是因为题目超时,只能拿60分。
  • 另一种解法就是使用dfs把图简单的遍历一遍就可以了。这里要用到两遍dfs反着也要建图。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
const int INF=0X3F3F3F3F;
const int maxn=1003;
int n,m;
int map[maxn][maxn];
int map1[maxn][maxn];
bool vis[maxn];
bool vis1[maxn];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
memset(map,INF,sizeof(map));
memset(map1,INF,sizeof(map1));
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
map[a][b]=1;
map1[b][a]=1;
}
for(int i=1;i<=n;i++){
map[i][i]=0;
map1[i][i]=0;
vis[i]=true;
vis1[i]=true;
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
map1[i][j]=min(map1[i][j],map1[i][k]+map1[k][j]);
}
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(map[i][j]==INF&&map[j][i]==INF&&map1[i][j]==INF&&map1[j][i]==INF){
vis[i]=false;
break;
}
}
if(vis[i]){
ans++;
//cout<<i<<endl;
}
}
cout<<ans<<endl;
//system("pause");
return 0;
}

以下是100分的使用dfs求解的算法代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
const int maxn=1003;
int n,m;
bool vis1[maxn];
bool vis2[maxn];
vector<int> v1[maxn];
vector<int> v2[maxn];
void dfs(int i){
for(int j=0;j<v1[i].size();j++){
if(!vis1[v1[i][j]]){
vis1[v1[i][j]]=true;
dfs(v1[i][j]);
}
}
}
void dfsr(int i){
for(int j=0;j<v2[i].size();j++){
if(!vis2[v2[i][j]]){
vis2[v2[i][j]]=true;
dfsr(v2[i][j]);
}
}
} int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
v1[a].push_back(b);
v2[b].push_back(a);
}
int ans=0;
for(int i=1;i<=n;i++){
memset(vis1,0,sizeof(vis1));
memset(vis2,0,sizeof(vis2));
vis1[i]=true;
dfs(i);
vis2[i]=true;
dfsr(i);
bool flag=true;
for(int j=1;j<=n;j++){
if(!vis1[j]&&!vis2[j]){
flag=false;
break;
}
}
if(flag)
ans++;
}
cout<<ans<<endl;
//system("pause");
return 0;
}

CCF(通信网络):简单DFS+floyd算法的更多相关文章

  1. 【CCF】通信网络 简单搜索

    去重!不然有环就直接挂掉了...0分 #include<iostream> #include<cstdio> #include<string> #include&l ...

  2. Floyd算法简单实现(C++)

    图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...

  3. 图论算法(二)最短路算法:Floyd算法!

    最短路算法(一) 最短路算法有三种形态:Floyd算法,Shortset Path Fast Algorithm(SPFA)算法,Dijkstra算法. 我个人打算分三次把这三个算法介绍完. (毕竟写 ...

  4. CCF CSP 201709-4 通信网络

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

  5. floyd算法 青云的机房组网方案(简单)

    青云的机房组网方案(简单) 青云现在要将 nn 个机房连成一个互相连通的网络.工程师小王设计出一个方案:通过在 nn 个机房之间铺设 n-1n−1 条双向的光纤,将所有的机房连接.可以假设数据在两个机 ...

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

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

  7. 通信网络 ccf

    试题编号: 201709-4 试题名称: 通信网络 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只 ...

  8. 算法笔记_069:Floyd算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 使用Floyd算法得到最短距离示例 2.2 具体编码   1 问题描述 何为Floyd算法? Floyd算法功能:给定一个加权连通图,求取从每一个顶点到其它所 ...

  9. [图论]Floyd 算法小结

    Floyd 算法小结  By Wine93 2013.11 1. Floyd算法简介 Floyd算法利用动态规划思想可以求出任意2点间的最短路径,时间复杂度为O(n^3),对于稠密图, 效率要高于执行 ...

随机推荐

  1. 【uva 10954】Add All(算法效率--Huffman编码+优先队列)

    题意:有N个数,每次选2个数合并为1个数,操作的开销就是这个新的数.直到只剩下1个数,问最小总开销. 解法:合并的操作可以转化为二叉树上的操作[建模],每次选两棵根树合并成一棵新树,新树的根权值等于两 ...

  2. HDU 2897 邂逅明下(巴士变形)

    题意: 给你n个石子,你最少取p个,最多取q个,问谁能赢 题解: 变形版的巴什博弈,当n>=q+1的时候,那么还是以q+1为一组拿走,剩下一个(n%(q+1)),这个时候如果它小于p的话都直接输 ...

  3. kubernetes实战-配置中心(二)交付apollo配置中心到k8s

    apollo官网:官方地址 apollo架构图: apollo需要使用数据库,这里使用mysql,注意版本需要在5.6以上: 本次环境mysql部署在10.4.7.11上,使用mariadb:10.1 ...

  4. C++ new delete malloc free

    title: C++ new delete malloc free date: 2020-03-10 categories: c++ tags: 语法 C++的new delete malloc fr ...

  5. 如何实现一个简易版的 Spring - 如何实现 @Component 注解

    前言 前面两篇文章(如何实现一个简易版的 Spring - 如何实现 Setter 注入.如何实现一个简易版的 Spring - 如何实现 Constructor 注入)介绍的都是基于 XML 配置文 ...

  6. 012.NET5_MVC_Razor布局

    Razor 页面组成到底有哪些内容? 包含了Layout的母版嵌套的返回需要渲染的视图内容: 如何嵌套? 通过Layout中的RenderBody()方法做了替换,把返回的视图替换到母版页中,形成了一 ...

  7. certbot 获取数字证书失效问题

    title: certbot 获取数字证书失效问题 author: Narule date: 2021-02-18 10:45:00 +0800 categories: [Technology^技术, ...

  8. js array contains All In One

    js array contains All In One includes & contains & has Array.prototype.contains "use st ...

  9. wireshark 获取指定进程id的数据

    >netstat -aon | findstr 11380 TCP 191.127.1.7:57936 29.225.107.216:3734 ESTABLISHED 11380 过滤器: tc ...

  10. Dart 中断Future

    更多 中断future 方法1) import 'package:async/async.dart'; void main() { var get = CancelableOperation.from ...