记录编号 555479 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015]信息传递 最终得分 100
用户昵称 Gravatarignitedark 是否通过 通过
代码语言 C++ 运行时间 0.277 s
提交时间 2020-10-03 11:33:24 内存使用 7.75 MiB
显示代码纯文本
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int n;
int a[500010];
int v[500010];
int u[500010];
int maxx;
int now;
void dfs(int x,int z) {
  if(v[x] != 0) {
    if(u[x] == now)   
    maxx = min(maxx, z-v[x]);
    return ;
  }
  u[x] = now;
  v[x] = z;
  dfs(a[x], z+1);
  return;
}
int main() {
  maxx = 0x3fffffff;
  freopen("2015message.in", "r", stdin);
  freopen("2015message.out", "w", stdout);
  cin >> n;
  for(int i = 1;i <= n; i++)
    cin >> a[i];
  for(int i = 1;i <= n; i++) {
    now = i;
    if(v[i] == 0) {
      u[i] = now;
      v[i] = 1; 
      dfs(a[i], 2);
    }
  }
  cout << maxx;
  return 0;
}