题目:
输入输出要求:
源代码:
#include <stdio.h>
#include<math.h>
typedef struct node{
int data;
int next;
}node;
int main()
{
int s,d=-1,n,next1,next2=-1,p=-1;
scanf("%d %d",&s,&n);
node x[100010];
int m[10010]={0};
for(int i=0;i<n;i++)
{
int a;
scanf("%d",&a);
scanf("%d %d",&x[a].data,&x[a].next);
}
next1=s;
int w;
while(next1!=-1)
{
if(m[abs(x[next1].data)]==0)
{
m[abs(x[next1].data)]=1;
if(next1!=s)
{
if(x[w].next!=next1)
x[w].next=next1;
}
w=next1;
}
else
{
if(next2==-1)
{
d=next1;
}
else
{
x[next2].next=next1;
}
next2=next1;
}
next1=x[next1].next;
}
x[w].next=-1;
x[next2].next=-1;
while(s!=-1)
{
if(s<10)
printf("0000%d",s);
else if(s<100)
printf("000%d",s);
else if(s<1000)
printf("00%d",s);
else if(s<10000)
printf("0%d",s);
else
printf("%d",s);
printf(" %d ",x[s].data);
if(x[s].next==-1)
printf("-1\n");
else if(x[s].next<10)
printf("0000%d\n",x[s].next);
else if(x[s].next<100)
printf("000%d\n",x[s].next);
else if(x[s].next<1000)
printf("00%d\n",x[s].next);
else if(x[s].next<10000)
printf("0%d\n",x[s].next);
else
printf("%d\n",x[s].next);
s=x[s].next;
}
while(d!=-1)
{
if(d<10)
printf("0000%d",d);
else if(d<100)
printf("000%d",d);
else if(d<1000)
printf("00%d",d);
else if(d<10000)
printf("0%d",d);
else
printf("%d",d);
printf(" %d ",x[d].data);
if(x[d].next==-1)
printf("-1");
else if(x[d].next<10)
printf("0000%d\n",x[d].next);
else if(x[d].next<100)
printf("000%d\n",x[d].next);
else if(x[d].next<1000)
printf("00%d\n",x[d].next);
else if(x[d].next<10000)
printf("0%d\n",x[d].next);
else
printf("%d\n",x[d].next);
d=x[d].next;
}
return 0;
}