#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node{
int data;
int next;
}Node[100010];
bool cmp(int a,int b){
return Node[a].data<Node[b].data;
}
int main() {
int N,first;
cin>>N>>first;
int address;
for(int i=0;i<N;i++){
cin>>address;
cin>>Node[address].data>>Node[address].next;
}
vector<int> v;
int p;
int count=0;
for(int p=first;p!=-1;p=Node[p].next ){
v.push_back(p);
count++;
}
if(count!=0){
sort(v.begin(),v.end(),cmp);
// cout<<count<<" "<<v[0]<<endl;
cout<<count<<" ";
printf("%5d\n",v[0]);
for(int i=0;i<v.size();i++){
printf("%05d %d ",v[i],Node[v[i]].data);
if(i!=v.size()-1){
printf("%05d\n",v[i+1]);
} else{
cout<<-1<<endl;
}
}
} else{
cout<<0<<" "<<-1<<endl;
}
return 0;
}
本题A1074 A1032解法几乎一样 将首地址放入vector 自定义cmp sort 输出