#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int first,N,K;
cin>>first>>N>>K;
int next[100005];
int data[100005];
int address;
for(int i=0;i<N;i++){
cin>>address;
cin>>data[address]>>next[address];
}
vector<int> cur;
while (first!=-1){
cur.push_back(first);
first = next[first];
}
//
for(int i=K;i<=cur.size();i=i+K){
reverse(cur.begin()+i-K,cur.begin()+i);
}
for(int i=0;i<cur.size();i++){
printf("%05d %d ",cur[i],data[cur[i]]);
if(i!=cur.size()-1){
printf("%05d\n",cur[i+1]);
} else{
printf("-1\n");
}
}
}
第三种解法 利用首地址做文章,本题并没对next[首地址]进行更新,因为不需要。