比赛 2026.3.14 评测结果 AWWWWWWWWWWWWWWWWWWW
题目名称 The Chase 最终得分 5
用户昵称 LikableP 运行时间 1.834 s
代码语言 C++ 内存使用 8.02 MiB
提交时间 2026-03-14 10:55:20
显示代码纯文本
#include <cstdio>
#include <queue>
#include <cstring>

const int MAXN = 5e5 + 10;

int n, f;
int a[MAXN];
int time[MAXN];
int vis[MAXN];
std::queue<int> que;

int main() {
  #ifdef LOCAL
    freopen("!input.in", "r", stdin);
    freopen("!output.out", "w", stdout);
  #else
    freopen("Chase.in", "r", stdin);
    freopen("Chase.out", "w", stdout);
  #endif

  scanf("%d %d", &n, &f);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
  }
  memset(time, -1, sizeof(time));
  for (int i = 1, x; i <= f; ++i) {
    scanf("%d", &x);
    que.push(x), time[x] = 0;
  }

  while (!que.empty()) {
    int u = que.front();
    vis[u] = 1, que.pop();
    if (!vis[a[u]]) {
      time[a[u]] = time[u] + 1;
      que.push(a[u]);
    }
  }

  for (int i = 1; i <= n; ++i) {
    printf("%d\n", time[i] - 1);
  }
  return 0;
}