http://acm.hdu.edu.cn/showproblem.php?pid=2220
找规律
1.首先用个bool数组表示u中在v中未出现的数字
2.然后把最小的一个数与V中的n(1--n-2)数结合成一条边
3.如果v中这个不在存在,则存入bool数组中,依次类推
找规律
1.首先用个bool数组表示u中在v中未出现的数字
2.然后把最小的一个数与V中的n(1--n-2)数结合成一条边
3.如果v中这个不在存在,则存入bool数组中,依次类推
#include <iostream>
using namespace std;
int a[110],b[110];
bool c[110];
bool find(int x,int n)
{
int i;
for (i=0;i<n;i++)
{
if (a[i]==x)
{
return true;
}
}
return false;
}
int main()
{
int n,x,i,j,temp;
cin>>x;
while (x--)
{
scanf("%d",&n);
memset(c,true,n);
for (i=0;i<n-2;i++)
{
scanf("%d",&a[i]);
c[a[i]-1]=false;
}
for (i=0;i<n-2;i++)
{
for (j=0;j<n;j++)
{
if (c[j])
{
temp=a[i];
a[i]=-1;
c[j]=false;
break;
}
}
b[i]=j+1;
if (!find(temp,n))
{
c[temp-1]=true;
}
}
for (i=0;i<n-3;i++)
{
printf("%d ",b[i]);
}
printf("%d\n",b[i]);
}
return 0;
}
using namespace std;
int a[110],b[110];
bool c[110];
bool find(int x,int n)
{
int i;
for (i=0;i<n;i++)
{
if (a[i]==x)
{
return true;
}
}
return false;
}
int main()
{
int n,x,i,j,temp;
cin>>x;
while (x--)
{
scanf("%d",&n);
memset(c,true,n);
for (i=0;i<n-2;i++)
{
scanf("%d",&a[i]);
c[a[i]-1]=false;
}
for (i=0;i<n-2;i++)
{
for (j=0;j<n;j++)
{
if (c[j])
{
temp=a[i];
a[i]=-1;
c[j]=false;
break;
}
}
b[i]=j+1;
if (!find(temp,n))
{
c[temp-1]=true;
}
}
for (i=0;i<n-3;i++)
{
printf("%d ",b[i]);
}
printf("%d\n",b[i]);
}
return 0;
}