PAT A1052
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
const int MAXN= 100010 ;
struct node{
int add;
int key;
int next;
} ;
bool cmp ( node a, node b) {
return a. key< b. key;
}
int main ( ) {
node s[ MAXN] ;
int a[ MAXN] [ 2 ] ;
int n, i, j, k, h, start;
int tag= 0 ;
scanf ( "%d %d" , & n, & start) ;
for ( i= 0 ; i< n; i++ ) {
scanf ( "%d %d %d" , & j, & k, & h) ;
a[ j] [ 0 ] = k;
a[ j] [ 1 ] = h;
if ( j== start) tag= 1 ;
}
if ( tag== 0 ) printf ( "0 -1\n" ) ;
else {
i= start;
j= 0 ;
while ( i!= - 1 ) {
s[ j] . add= i;
s[ j] . key= a[ i] [ 0 ] ;
s[ j] . next= a[ i] [ 1 ] ;
i= a[ i] [ 1 ] ;
j++ ;
}
sort ( s, s+ j, cmp) ;
start= s[ 0 ] . add;
printf ( "%d %05d\n" , j, start) ;
for ( i= 0 ; i< j- 1 ; i++ ) {
s[ i] . next= s[ i+ 1 ] . add;
printf ( "%05d %d %05d\n" , s[ i] . add, s[ i] . key, s[ i] . next) ;
}
s[ j- 1 ] . next= - 1 ;
printf ( "%05d %d %d\n" , s[ j- 1 ] . add, s[ j- 1 ] . key, s[ j- 1 ] . next) ;
}
return 0 ;
}