2019年2月3日
23:24
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
const int maxn = 1e5 + 5;
using namespace std;
typedef struct P
{
int x, h , e, f;
}P;
vector<P> p;
bool cmp(P a, P b)
{
return a.x < b.x;
}
int main()
{
int n, head;
P t, tt[maxn];
while(cin >> n >> head)
{
for(int i = 0 ; i < n; i++)
{
scanf("%d%d%d", &t.h, &t.x, &t.e);
t.f = 0;
tt[t.h] = t;
}
for(int j = head; j != -1; j =tt[j].e)
//while(tt[head].e != -1)
{
tt[j].f = 1;
p.push_back(tt[j]);
//head = tt[head].e;
}
sort(p.begin(), p.end(), cmp);
if(p.empty())
{
cout << "0 -1" << endl;
continue;
}
printf("%d %05d\n", p.size(), p[0].h);
int i = 0;
for(; i < p.size() - 1; i++)
{
p[i].e = p[i + 1].h;
printf("%05d %d %05d\n", p[i].h, p[i].x, p[i].e);
}
printf("%05d %d -1\n", p[i].h, p[i].x);
p.clear();
}
return 0;
}