- 信息传递
- 2016-05-14 18:15:38 @
#include <cstdio>
int n,t[200050];
int visited[200050]={0};
int mindist=200088;
int node;
int dfs(int i,int dist){
visited[i]=1;
if(!visited[t[i]])
dist=dfs(t[i],dist);
else
node=t[i];
if(node==i)
mindist=mindist<dist?mindist:dist;
return dist+1;
}
int main(){
// freopen("in.txt","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&t[i]);
for(int i=1;i<=n;i++){
node=0;
if(!visited[i])
dfs(i,0);
}
printf("%d",mindist+1);
return 0;
}
1 条评论
-
cpera LV 7 @ 2016-07-19 15:38:49
试试改成inline int dfs
re原因应该是stack炸了
- 1
信息
- ID
- 1979
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 4096
- 已通过
- 980
- 通过率
- 24%
- 被复制
- 9
- 上传者