/*
这个题用了好长时间才做出来的
我的主要思路是深搜,主要是用邻接表来存的图;
开始的时候自己一直运行超时,后来自己加了一个判重数组之后还是有几个点过不去
接着我们应该先找到原点,也就是入口,然后通过入口dfs找到最远的距离的点
*/
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>
using namespace std;
int n;
int k,m;
const int N = 1e5+10;
bool st[N]; // 判重数组,如果当前这个点被访问,那么我们就不用dfs当前这个点了
// 邻接表
int h[N],ne[N],e[N],idx;
void add(int a,int b)
{
e[idx] = b,ne[idx] = h[a],h[a] = idx++;
}
int p[N];
int cnt = 0;
int ind = 0; // 用来记录下标
void dfs(int u,int count)
{
st[u] = true;
if(p[u] == 0)
{
if(cnt < count)
{
cnt = count;
ind = u;
}
return;
}
for(int i = h[u];~i;i = ne[i])
{
int j = e[i];
dfs(j,count + 1);
}
}
int main()
{
ios::sync_
L2-031 深入虎穴 (25 分)
最新推荐文章于 2022-08-26 14:22:48 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)