为什么编译错误
  • 板块灌水区
  • 楼主2023gdgz01
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/23 21:39
  • 上次更新2023/11/2 11:39:14
查看原帖
为什么编译错误
891606
2023gdgz01楼主2023/10/23 21:39

可能是我一是脑抽,勿喷……

代码如下:

#include <cstdio>
#include <vector>

using namespace std;

const int N = 5e6 + 5;

int n, m, f, ans[N], fa[N], depth[N];
vector<int> v[N];

int find(int u)
{
	if (u == fa[u])
	{
		return u;
	}
	fa[u] = find(fa[u]);
	return fa[u];
}

void tarjan(int u, int fa)
{
	depth[u] = depth[fa] + 1;
	for (register auto it: v[u])
	{
		tarjan(it, u);
		fa[it] = u;
	}
	if (ans[depth[u]])
	{
		ans[depth[u]] = find(ans[depth[u]]);
	}
	else
	{
		ans[depth[u]] = u;
	}
}

int main()
{
	scanf("%d%d", &n, &m);
	for (register int i = 1; i <= n; ++i)
	{
		scanf("%d", &f);
		v[i].push_back(f);
	}
	tarjan(1, 0);
	while (m--)
	{
		scanf("%d", &f);
		printf("%d\n", ans[f]);
	}
	return 0;
}
2023/10/23 21:39
加载中...