给出n个珠子,珠子两边有不同的颜色,把珠子串起来,要求相邻珠子的颜色一样
#include<stdio.h>
#include<string.h>
int n,d[55],map[55][55];
void dfs(int s)
{
int i;
for(i=1;i<=50;i++)
{
if(map[s][i])
{
map[i][s]--;
map[s][i]--;
dfs(i);
printf("%d %d\n",i,s);
}
}
}
int main()
{
int i,j,m,k;
scanf("%d",&m);
for(j=0;j<m;j++)
{
memset(d,0,sizeof(d));
for(i=1;i<=50;i++)
for(k=1;k<=50;k++)
map[i][k]=0;
scanf("%d",&n);
int x,y;
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
map[x][y]++;
map[y][x]++;
d[x]++;
d[y]++;
}
int flag=0,max=0,ss=0;
for(i=1;i<=50;i++)
{
if(d[i]%2==1)
{
flag=1;
break;
}
else if(d[i]>max)
{
max=d[i];
ss=i;
}
}
if(j)
printf("\n");
if(!flag)
{
printf("Case #%d\n",j+1);
dfs(ss);
}
else
printf("Case #%d\nsome beads may be lose\n",j+1);
}
return 0;
}