题解
2023-08-25 09:51:15
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int i,j,m,n,temp;
int a[50001],x[50001],y[50001];
int gs[50001],gs2[50001];
int r()
{
int ans=0,f=1;
char ch;
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
ans*=10;
ans+=ch-'0';
ch=getchar();
}
return ans*f;
}
int main()
{
n=r();
for(i=1;i<=n;i++)
{
x[i]=r(),y[i]=r();
}
a[1]=1,a[2]=x[1];
for(i=3;i<=n;i++)
{
if(x[a[i-1]]==a[i-2]) a[i]=y[a[i-1]];
else a[i]=x[a[i-1]];
}
int le,ri;
for(i=1;i<=n;i++)
{
le=i-1;
ri=i+1;
if(!le)
le=n;
if(ri==n+1)
ri=1;
if((x[a[i]]!=a[ri]||a[le]!=y[a[i]])&&
(y[a[i]]!=a[ri]||a[le]!=x[a[i]]))
{
cout<<-1;
return 0;
}
}
int dis1,dis2;
for (i=1; i<=n; i++)
{
dis1=(a[i]-i+n)%n;
dis2=(a[i]+i-1)%n;
gs[dis1]++;
gs2[dis2]++;
}
int ans=0;
for (i=0; i<n; i++)
{
if (ans<gs[i]) ans=gs[i];
if (ans<gs2[i]) ans=gs2[i];
}
cout<<n-ans;
return 0;
}
时间最优
这里空空如也
有帮助,赞一个