题解
2023-09-09 12:14:18
发布于:北京
2阅读
0回复
0点赞
#include <cstdio>
int l[1000001],r[1000001];
int a[1000001],cx[1000001];
int dis1[1000001],dis2[1000001];
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int n=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d",&l[i],&r[i]);
}
a[n]=l[1],a[1]=1,a[2]=r[1];
for(int i=3;i<=n-1;i++)
{
if(a[i-2]==l[a[i-1]])
{
a[i]=r[a[i-1]];
}
else if(a[i-2]==r[a[i-1]])
{
a[i]=l[a[i-1]];
}
else
{
printf("-1");
return 0;
}
}
for(int i=1;i<=n;i++)
{
dis1[(i-a[i]+n)%n]++;
dis2[(a[i]+i+n)%n]++;
}
int ans=0;
for(int i=0;i<=n*2;i++)
{
ans=max(ans,max(dis1[i],dis2[i]));
}
printf("%d",n-ans);
return 0;
}
这里空空如也
有帮助,赞一个