SK


私信TA

用户名:1973231998

访问量:20047

签 名:

成功只是一时的,失败才是主旋律,笑着面对失败是主要的。

等  级
排  名 258
经  验 5903
参赛次数 0
文章发表 59
年  龄 0
在职情况 学生
学  校 *
专  业

  自我简介:

重点就是:(点的访问次数)和(到达目的地路径条数)相等的点就是关键点。(也就是说每次到达终点都会访问的点就是关键点)
参考代码:

#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分

11 人评分

  评论区

g[u].push_back(v);
g[v].push_back(u);
输入13和23的时候g【3】不是会覆盖掉相同的吗
2022-03-19 19:35:11
大佬写的真不错  多谢多谢!
2020-10-06 10:23:19
  • «
  • 1
  • »