IDEA
1.如果start address==-1,则直接输出 0 -1,不用再执行下面操作,如果执行了会数组越界
CODE
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<algorithm>
#include<fstream>
using namespace std;
#define Max 100000
struct Node{
int add;
int key;
int next;
};
vector<Node> vec(Max);
vector<Node> res;
int cmp(Node node1,Node node2){
return node1.key<node2.key;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
#endif
int n,start;
cin>>n>>start;
for(int i=0;i<n;i++){
Node node;
cin>>node.add>>node.key>>node.next;
vec[node.add]=node;
}
if(start==-1){
printf("0 -1\n");
}else{
int p=start;
while(p!=-1){
res.push_back(vec[p]);
p=vec[p].next;
}
sort(res.begin(),res.end(),cmp);
for(int i=1;i<res.size();i++){
res[i-1].next=res[i].add;
}
res[res.size()-1].next=-1;
printf("%d %05d\n",res.size(),res[0].add);
for(int i=0;i<res.size()-1;i++){
printf("%05d %d %05d\n",res[i].add,res[i].key,res[i].next);
}
printf("%05d %d %d\n",res[res.size()-1].add,res[res.size()-1].key,res[res.size()-1].next);
}
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0;
}