记录编号 300786 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015]信息传递 最终得分 100
用户昵称 GravatarAntiLeaf 是否通过 通过
代码语言 C++ 运行时间 0.060 s
提交时间 2016-08-28 21:38:05 内存使用 0.80 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
namespace mine{
	int __c,__x,__a[110],__i,__j;
	bool __neg;
	inline int getint(){
		__x=__neg=0;
		do __c=getchar();while(__c==' '||__c=='\n'||__c=='\r'||__c=='\t');
		if(__c=='-'){
			__neg=true;
			__c=getchar();
		}
		for(;__c>='0'&&__c<='9';__c=getchar())__x=(__x<<1)+(__x<<3)+(__c^48);
		if(__neg)return -__x;
		return __x;
	}
	inline void putint(int __x){
		__neg=__x<0;
		if(__neg)__x=-__x;
		__i=0;
		do{
			__a[__i++]=__x%10+48;
			__x/=10;
		}while(__x);
		if(__neg)putchar('-');
		for(__j=__i-1;__j>=0;__j--)putchar(__a[__j]);
	}
}
using namespace mine;
const int maxn=200010;
void dfs(const int&);
int n,to[maxn],vis[maxn]={0},tim=0,ans=~(1<<31);
bool ins[maxn]={false};
inline int MAIN(){
#define MINE
#ifdef MINE
	freopen("2015message.in","r",stdin);
	freopen("2015message.out","w",stdout);
#endif
	n=getint();
	for(int i=1;i<=n;i++)to[i]=getint();
	for(int i=1;i<=n;i++)if(!vis[i])dfs(i);
	putint(ans);
	return 0;
}
inline void dfs(const int &x){
	if(vis[x]){
		if(ins[x])ans=min(ans,tim-vis[x]+1);
		return;
	}
	vis[x]=++tim;
	ins[x]=true;
	dfs(to[x]);
	ins[x]=false;
}
int hzoier=MAIN();
int main(){;}