#include<bits/stdc++.h>//中间测试点过不去!
using namespace std;
const int maxn=100010;
struct node{
int add,key,next;
}no[maxn];
vector<int> nega,mid,big;//存地址!
int start,n,k;
int main(){
scanf("%d%d%d",&start,&n,&k);
for(int i=0;i<n;i++){
int add,key,next;
scanf("%d%d%d",&add,&key,&next);
no[add].key=key;
no[add].next=next;
no[add].add=add;
}
int clean=start;
while(clean!=-1){
}
int now=start;
while(now!=-1){
if(no[now].key<0){
nega.push_back(now);
} else if(no[now].key>k){
big.push_back(now);
} else {
mid.push_back(now);
}
now=no[now].next;
}
for(int i=0;i<nega.size();i++){
if(i!=nega.size()-1)
printf("%05d %d %05d\n",nega[i],no[nega[i]].key,nega[i+1]);
else printf("%05d %d ",nega[i],no[nega[i]].key);
}
if(mid.size()) printf("%05d\n",mid[0]);
else printf("-1\n");
for(int i=0;i<mid.size();i++){
if(i!=mid.size()-1)
printf("%05d %d %05d\n",mid[i],no[mid[i]].key,mid[i+1]);
else printf("%05d %d ",mid[i],no[mid[i]].key);
}
if(big.size()) printf("%05d\n",big[0]);
else printf("-1\n");
for(int i=0;i<big.size();i++){
if(i!=big.size()-1)
printf("%05d %d %05d\n",big[i],no[big[i]].key,big[i+1]);
else printf("%05d %d -1\n",big[i],no[big[i]].key);
}
return 0;
}
1133 Splitting A Linked List (25)中间测试点过不去!
最新推荐文章于 2022-10-26 17:03:53 发布