最后一个测试点没过想了好久,后来才知道是没有特判头节点是-1的情况
#include<iostream>
#include<algorithm>
using namespace std;
int key[100050],list[100050];
bool cmp(int a,int b){
return key[a]<key[b];
//不要写成key[list[a]];拿出来的已经是元素了,不是i
}
int main(){
int temp,n,first,sum=0,next[100050];
cin>>n>>first;
if (first==-1){//考虑第一个就是不可能情况
printf("0 -1\n");
return 0;
}
for(int i=0;i<n;i++){
cin>>temp;
cin>>key[temp]>>next[temp];
}
while(first!=-1){
list[sum++]=first;
first=next[first];
}
sort(list,list+sum,cmp);
printf("%d %05d\n",sum,list[0]);
for(int i=0;i<sum-1;i++){
printf("%05d %d %05d\n",list[i],key[list[i]],list[i+1]);
}
printf("%05d %d -1\n",list[sum-1],key[list[sum-1]]);
return 0;
}