原题链接:蓝桥杯2013年第四届真题-危险系数
重点就是:(点的访问次数)和(到达目的地路径条数)相等的点就是关键点。(也就是说每次到达终点都会访问的点就是关键点)
参考代码:
#include<bits/stdc++.h>
using namespace std;
int n, m,u,v,t=0,k=-1;//t记录到达终点路径条数,k表示关键点
vector<int> g[1000];
int vis[1000],vts[1000];//vis判断是否访问,vts记录所有路径到达终点时每个点的访问次数
void dfs(int x)
{
if (x == v) //到达终点
{
for (int i =1; i <= n; i++)//记录频率
{
vts[i] += vis[i];
}
t++; //记录到达次数
return;
}
vis[x] = 1;
for (int i = 0; i < g[x].size(); i++)//访问邻接表
{
if (vis[g[x][i]] == 0) dfs(g[x][i]);
}
vis[x]=0;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
cin >> u >> v;
g[u].push_back(v);//无向图双向赋值
g[v].push_back(u);
}
cin >> u >> v;
dfs(u);
for (int i = 1; i <=n; i++)
{
if (vts[i] == t&&t!=0) k++;
}
cout << k;
}0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复