#include<iostream>
#include<vector>
using namespace std;
struct node{
int data, id, next;
}ans[100010];
int main(){
int fid, n, k;
vector<node> temp, v;
scanf("%d%d%d", &fid, &n, &k);
for(int i = 0; i < n; i++){
int s, d, e;
scanf("%d%d%d", &s, &d, &e);
ans[s] = {d, s, e};
}
for(; fid != -1; fid = ans[fid].next){
v.push_back(ans[fid]);
}
for(int i = 0; i < v.size(); i++){
if(v[i].data < 0) temp.push_back(v[i]);
}
for(int i = 0; i < v.size(); i++){
if(v[i].data >= 0 && v[i].data <= k) temp.push_back(v[i]);
}
for(int i = 0; i < v.size(); i++){
if(v[i].data > k) temp.push_back(v[i]);
}
for(int i = 0; i < temp.size() - 1; i++){
printf("%05d %d %05d\n", temp[i].id, temp[i].data, temp[i+1].id);
}
printf("%05d %d -1", temp[temp.size()-1].id, temp[temp.size()-1].data);
return 0;
}
A1133 Splitting A Linked List (25分)
原文:https://www.cnblogs.com/tsruixi/p/13096530.html