AtCoder - 2641 Trained?
原题地址
附上代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <iomanip>
//#include <string.h>
#include <bits/stdc++.h>
#define INF 999999999
using namespace std;
#define ll long long
#define boost ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int vis[1000000]={0};
int hh[1000000];
int main()
{
boost;
int n;
cin >>n;
for(int i=1;i<=n;i++){
cin >>hh[i];
}
int j=1,sum=0,falg=0,p=1;
vis[1]=1;
while(1){
if(vis[2]==1)
break;
else if(vis[j]==2){
cout<<-1<<endl;
falg=1;
break;
}
else {
j=hh[j];
//cout<<j<<endl;
vis[j]++;
//cout<<" "<<vis[j]<<endl;
sum++;
}
}
if(!falg)
cout<<sum<<endl;
return 0;
}