P8604 [蓝桥杯 2013 国 C] 危险系数

题目背景

抗日战争时期,冀中平原的地道战曾发挥重要作用。

题目描述

地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。

我们来定义一个危险系数 DF(x,y):

对于两个站点 x 和 y(x=y), 如果能找到一个站点 z,当 z 被敌人破坏后,x 和 y 不连通,那么我们称 z 为关于 x,y 的关键点。相应的,对于任意一对站点 x 和 y,危险系数 DF(x,y) 就表示为这两点之间的关键点个数。

本题的任务是:已知网络结构,求两站点之间的危险系数。

输入格式

输入数据第一行包含 2 个整数 n(2≤n≤1000),m(0≤m≤2000),分别代表站点数,通道数。

接下来 m 行,每行两个整数 u,v(1≤u,v≤n,u=v) 代表一条通道。

最后 1 行,两个数 u,v,代表询问两点之间的危险系数 DF(u,v)。

输出格式

一个整数,如果询问的两点不连通则输出 −1−1。

输入输出样例

输入

复制代码
7 6
1 3
2 3
3 4
3 5
4 5
5 6
1 6

输出

复制代码
2

说明/提示

时限 1 秒, 64M。蓝桥杯 2013 年第四届国赛

我们考虑找出所有的路线,如果一个点是关键点,则此点绝对会出现在每一条路线中,故我们在dfs的过程中记录下每个点被走过的次数。最后遍历一遍所有的点,找出和总路径数相同的点就是关键点。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=4e4+10;
const int N=1e6+10;
int n,m;
vector<int> mp[1001];
int vis[1001];
int cnt[1001];
int sum;
void dfs(int cur,int e)
{
	if(cur==e)
	{
		sum++;
		for(int i=1;i<=n;i++)
		{
			if(vis[i]==1)
			cnt[i]++;
		}
		return ;
	}
	for(int i=0;i<mp[cur].size();i++)
	{
		int k=mp[cur][i];
		if(!vis[k])
		{
			vis[k]=1;
			dfs(k,e);
			vis[k]=0;
		}
	}
}
void solve()
{
	cin>>n>>m;
	for(int i=0,x,y;i<m;i++)
	{
		cin>>x>>y;
		mp[x].push_back(y);
		mp[y].push_back(x);
	}
	int s,e;
	cin>>s>>e;
	vis[s]=1;
	dfs(s,e);
	int ans=0;
	if(sum>0)
	{
		for(int i=1;i<=n;i++)
		{
			if(cnt[i]==sum)
			ans++;
		}
		cout<<ans-2<<endl;
	}
	else
	cout<<-1<<endl;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	ll t=1;
//	cin>>t;
	while(t--)
	{	
		solve();
	}
	return 0;
}
相关推荐
Pluchon9 小时前
硅基计划4.0 算法 FloodFill算法
java·算法·leetcode·决策树·逻辑回归·深度优先·图搜索算法
魂梦翩跹如雨16 小时前
P10424 [蓝桥杯 2024 省 B] 好数——Java解答
java·蓝桥杯
Elias不吃糖18 小时前
Leetcode-10.正则表达式匹配(暴力 或 记忆暴力)
数据结构·c++·算法·leetcode·深度优先
小年糕是糕手18 小时前
【C++】类和对象(四) -- 取地址运算符重载、构造函数plus
c语言·开发语言·数据结构·c++·算法·leetcode·蓝桥杯
_OP_CHEN19 小时前
【算法基础篇】(二十四)数据结构之并查集拓展:从 “单一关系” 到 “复杂约束”,这篇带你解锁进阶玩法!
数据结构·蓝桥杯·并查集·算法竞赛·acm/icpc·带权并查集·扩展域并查集
魂梦翩跹如雨2 天前
P8615 [蓝桥杯 2014 国 C] 拼接平方数——Java解答
java·c语言·蓝桥杯
迈巴赫车主2 天前
蓝桥杯20534爆破 java
java·数据结构·算法·职场和发展·蓝桥杯
是苏浙2 天前
蓝桥杯备战day2
蓝桥杯
CoderYanger2 天前
A.每日一题——2435. 矩阵中和能被 K 整除的路径
开发语言·线性代数·算法·leetcode·矩阵·深度优先·1024程序员节
Pluchon2 天前
硅基计划4.0 算法 递归&回溯
算法·leetcode·决策树·深度优先·剪枝·广度优先·宽度优先