70分,#2,9,10TLE,dalao求助
查看原帖
70分,#2,9,10TLE,dalao求助
772478
Wisdom_chicken_god楼主2023/8/13 10:35
#include<bits/stdc++.h>
#define M 200005
using namespace std;
int n,a[M],b[M];
inline int InP()
{
    int N=0;
    char C;
    C=getchar();
    while('0' <= C && C <= '9')
    N=N*10 + (C-'0') , C=getchar();
    return N;
}
int f(int x)
{
	memset(b,0,sizeof(b));
	int sum1=0,sum2=1,j;
	for(int i=x;b[i]!=1;i=a[i])
	{
		b[i]=1;
		sum1++;
		j=i;
	}
	j=a[j];
	for(int i=x;a[i]!=j;i=a[i])
	{
		sum2++;
	}
	int cnt=sum1-sum2;
	return cnt;
}
int main()
{
	int minx=0xfffff;
	n=InP();
	for(int i=1;i<=n;i++)
	{
		a[i]=InP();
	}
	for(int i=1;i<=n;i++)
	{
		int y=f(i);
		if(y!=0)
		minx=min(minx,y);
	}
	printf("%d\n",minx);
	return 0;
}
2023/8/13 10:35
加载中...