蓝桥杯 历届试题 危险系数(暴力 bfs)
来源:互联网 发布:北大青鸟主机联动编程 编辑:程序博客网 时间:2024/06/06 05:17
题意:我们来定义一个危险系数DF(x,y):
对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。
对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。
本题的任务是:已知网络结构,求两站点之间的危险系数。
思路:枚举所有点,判断去掉该点后x,y之间的连通性是否发生变化
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<queue>using namespace std;const int maxn = 2e3+5;vector<int> g[maxn];bool vis[maxn];int n, m;bool bfs(int u, int v, int z){ memset(vis, 0, sizeof(vis)); queue<int> q; q.push(u); vis[u] = 1; vis[z] = 1; while(!q.empty()) { u = q.front(); q.pop(); if(u == v) return 1; for(int i = 0; i < g[u].size(); i++) { int to = g[u][i]; if(!vis[to]) { vis[to] = 1; q.push(to); } } } return 0;}int main(void){ while(cin >> n >> m) { for(int i = 0; i < maxn; i++) g[i].clear(); while(m--) { int u, v; scanf("%d%d", &u, &v); g[u].push_back(v); g[v].push_back(u); } int x, y; scanf("%d%d", &x, &y); int cur = bfs(x, y, 0); if(!cur) puts("-1"); else { int ans = 0; for(int i = 1; i <= n; i++) { if(i != x && i != y) { int tmp = bfs(x, y, i); if(!tmp) ans++; } } printf("%d\n", ans); } } return 0;}
阅读全文
0 0
- 蓝桥杯 历届试题 危险系数(暴力 bfs)
- 蓝桥杯 历届试题 危险系数 暴力法 By Assassin
- 历届试题 危险系数 (蓝桥杯)
- 蓝桥杯 历届试题 危险系数
- 蓝桥杯 历届试题 危险系数
- 历届试题 危险系数
- 历届试题 危险系数
- 历届试题 危险系数
- 历届试题 危险系数
- 蓝桥杯 历届试题 危险系数(DFS求割点)
- 历届试题 危险系数 (求割点DFS)
- 历届试题 危险系数 求割点
- 蓝桥杯 历届试题 危险系数 两点间割点法 By Assassin
- 蓝桥杯 历届试题 PREV-12 危险系数 并查集找割点 Java
- 蓝桥杯 历届试题 危险系数 解题报告(并查集)
- 历届试题 危险系数 (蓝桥,并查集,搜索)
- 蓝桥杯 历届试题 回文数字 (暴力)
- 蓝桥杯 历届试题 带分数 (暴力枚举)
- 自动化测试--windows系统--Python安装pymysql
- C++学习:第一个C++程序
- caffe实战之训练并测试自己的数据
- leetcode.461 Hamming Distance
- 最好用的mysql密码忘记的解决方法
- 蓝桥杯 历届试题 危险系数(暴力 bfs)
- Markdown 语法手册 (完整整理版)
- YII简单数据库的操作
- intent跳转活动新活动一片空白
- libffm的基本使用--mac为例子
- codeforce 2A
- 360春秋杯CTF比赛WRIteUP
- 机器学习-特征选择
- [李景山php] C语言实现简单五子棋