记录编号 337345 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015]信息传递 最终得分 100
用户昵称 GravatarRapiz 是否通过 通过
代码语言 C++ 运行时间 0.125 s
提交时间 2016-11-04 11:03:57 内存使用 2.61 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#define file(x) "2015message."#x
using std::min;
const int V=200010,L=1<<15;
namespace I{
	char buf[L],*s,*t;
	char gc(){
		if(s==t) t=(s=buf)+fread(buf,1,L,stdin);
		if(s==t) return EOF;
		return *s++;
	}
	int gi(){
		int s=0,ch=gc();
		while(!(ch<='9'&&ch>='0')) ch=gc();
		while(ch<='9'&&ch>='0') s=s*10+ch-'0',ch=gc();
		return s;
	}
}using I::gi;
int n,nxt[V],cnt,clk,dfn[V],vis[V],ans=1<<30;
int main(){
	freopen(file(in),"r",stdin);
	freopen(file(out),"w",stdout);
	n=gi();
	for(int i=1;i<=n;i++) nxt[i]=gi();
	for(int i=1;i<=n;i++) if(!vis[i]){
		++cnt;
		int s;
		for(s=i;!vis[nxt[s]];s=nxt[s]) dfn[s]=++clk,vis[s]=cnt;
		dfn[s]=++clk,vis[s]=cnt;
		if(vis[nxt[s]]==vis[s]) ans=min(ans,dfn[s]-dfn[nxt[s]]+1);
	}
	printf("%d",ans);
}