#include<cstdio>
#include<set>
using namespace std;
#define M 100010
struct node{
int data,next;
}n[M];
int list1[M],list2[M];
int first,num;
set<int> s;
void printnode(int *list,int cnt){
for (int i = 0; i < cnt; i++){
printf("%.5d %d ",list[i],n[list[i]].data);
if(i!=cnt-1)
printf("%.5d\n",list[i+1]);
else
printf("-1\n");
}
}
int main(){
scanf("%d%d",&first,&num);
for (int i = 0; i < num; i++){//输入
int t;
scanf("%d",&t);
scanf("%d%d",&n[t].data,&n[t].next);
}
int p=first;
int cnt1=0,cnt2=0;
while (p!=-1){//处理,建立红黑树,每次都查找
int val=n[p].data;
val=val>0?val:-val;
if(s.count(val))
list2[cnt2++]=p;
else{
s.insert(val);
list1[cnt1++]=p;
}
p=n[p].next;
}
printnode(list1,cnt1);
printnode(list2,cnt2);
return 0;
}
PAT 1097. Deduplication on a Linked List
最新推荐文章于 2024-04-22 15:17:43 发布