简洁代码90分求调 #2TLE
查看原帖
简洁代码90分求调 #2TLE
604881
jimmyforever楼主2024/8/24 10:51
#include<iostream>
using namespace std;
int n,t,w,c,A[200001];
bool D[200001];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>A[i];
	}
	c=n;
	for(int i=1;i<=n;i++)
	{
	    if(D[i]) continue;
		t=i;
	    w++;
	    bool B[200001]={0};
	    int C[200001]={0};
		while(w)
	    {
		    if(D[t]) break;
			B[t]=1;
		    D[t]=1;
		    C[t]=w;
		    w++;
		    t=A[t];
		    if(B[t])
		    {
			    if(w-C[t]<c) c=w-C[t];
			    break;
		    }
	    }
	}
	cout<<c;	
	return 0;
}
2024/8/24 10:51
加载中...