#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define N 100000
struct node {
int key;
int addr;
bool operator<(const node & b) const {
return key < b.key;
}
};
int main(int argc, char **argv) {
int n, src;
int list[N];
int key[N];
cin >> n >> src;
for(int i = 0; i < n; i ++) {
int s, k, d;
scanf("%d%d%d", &s, &k, &d);
list[s] = d;
key[s] = k;
}
vector<node> kv;
kv.reserve(n);
for(int i = src; i != -1; i = list[i]) {
node n = { key[i], i };
kv.push_back(n);
}
sort(kv.begin(), kv.end());
if(kv.size()) {
printf("%d %05d\n", kv.size(), kv[0].addr);
int i;
for(i = 0; i < kv.size()-1; i ++)
printf("%05d %d %05d\n", kv[i].addr, kv[i].key, kv[i+1].addr);
printf("%05d %d -1\n", kv[i].addr, kv[i].key);
}
else {
printf("0 -1\n");
}
return 0;
}
1052. Linked List Sorting (25)
最新推荐文章于 2018-08-28 18:09:37 发布