#include <string.h>
#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>
#include <map>
#include <string>
#include <iostream>
#include <math.h>
using namespace std;
struct node
{
int data;
int now;
int next;
}A[100010];
int st,N;
bool harsh[10010]={false};
int main()
{
scanf("%d%d",&st,&N);
for(int i=0;i<N;i++)
{
int now,data,next;
scanf("%d%d%d",&now,&data,&next);
A[now].now=now;
A[now].data=data;
A[now].next=next;
}
int p=st;
int head1=100005,head2=100006;
int pre1=head1,pre2=head2;
A[head1].next=-1;
A[head2].next=-1;
while(p!=-1)
{
int r=A[p].next;
int t=abs(A[p].data);
if(harsh[t])
{
A[pre1].next=p;
A[p].next=-1;
pre1=p;
}
else
{
A[pre2].next=p;
A[p].next=-1;
pre2=p;
harsh[t]=true;
}
p=r;
}
p=A[head2].next;
while(p!=-1)
{
if(A[p].next==-1)
{
printf("%05d %d -1\n",A[p].now,A[p].data);
}
else
{
printf("%05d %d %05d\n",A[p].now,A[p].data,A[p].next);
}
p=A[p].next;
}
p=A[head1].next;
while(p!=-1)
{
if(A[p].next==-1)
{
printf("%05d %d -1\n",A[p].now,A[p].data);
}
else
{
printf("%05d %d %05d\n",A[p].now,A[p].data,A[p].next);
}
p=A[p].next;
}
return 0;
}
PAT甲1097 Deduplication on a Linked List(25 分)
最新推荐文章于 2024-11-09 19:34:05 发布
