int getFriend(int nCount, int * data_1)
{
long n,a[50000],d[50000],use[50001],max=0;
long i,hy1,hy2;
memset(use, 0, sizeof(use));
a[0]=1; use[a[0]]=1;
for(i=1;i<n;i++)
{
hy1=data_1[ (a[i-1]-1) * 2 ];
hy2=data_1[ (a[i-1]-1) * 2 + 1];
if(!use[hy1])
{ a[i]=hy1; use[hy1]=1;
}
else
{
if(!use[hy2])
{
a[i]=hy2;
use[hy2]=1;
}
else /* 不能满足所有同学愿望的情形 */
{
return -1;
}
}
}
{
long i,temp;
memset(d,0,sizeof(d));
for(i=0;i<n;i++)
{
temp=(n+a[i]-i)%n;
d[temp]++;
}
for(i=0;i<n;i++) if(max<d[i]) max=d[i];
memset(d,0,sizeof(d));
for(i=0;i<n;i++)
{
temp=(n+a[n-1-i]-i)%n;
d[temp]++;
}
for(i=0;i<n;i++)
{
if(max<d[i]) max=d[i];
}
}
return n-max;
}
{
long n,a[50000],d[50000],use[50001],max=0;
long i,hy1,hy2;
memset(use, 0, sizeof(use));
a[0]=1; use[a[0]]=1;
for(i=1;i<n;i++)
{
hy1=data_1[ (a[i-1]-1) * 2 ];
hy2=data_1[ (a[i-1]-1) * 2 + 1];
if(!use[hy1])
{ a[i]=hy1; use[hy1]=1;
}
else
{
if(!use[hy2])
{
a[i]=hy2;
use[hy2]=1;
}
else /* 不能满足所有同学愿望的情形 */
{
return -1;
}
}
}
{
long i,temp;
memset(d,0,sizeof(d));
for(i=0;i<n;i++)
{
temp=(n+a[i]-i)%n;
d[temp]++;
}
for(i=0;i<n;i++) if(max<d[i]) max=d[i];
memset(d,0,sizeof(d));
for(i=0;i<n;i++)
{
temp=(n+a[n-1-i]-i)%n;
d[temp]++;
}
for(i=0;i<n;i++)
{
if(max<d[i]) max=d[i];
}
}
return n-max;
}