题目链接:1074. Reversing Linked List (25)
#include<bits/stdc++.h>
const int maxn =100100;
using namespace std;
int n,k,sum,first,add,data[maxn],next1[maxn],list1[maxn],result[maxn];
int main(){
cin>>first>>n>>k;
for(int i=0;i<n;i++){
cin>>add;
cin>>data[add]>>next1[add];
}
while(first!=-1){
list1[sum++]=first;
first=next1[first];
}
for(int i=0;i<sum;i++)result[i]=list1[i];
for(int i=0;i<sum-sum%k;i++) result[i]=list1[i/k*k+k-1-i%k];
for(int i=0;i<sum-1;i++)printf("%05d %d %05d\n",result[i],data[result[i]],result[i+1]);
printf("%05d %d -1\n",result[sum-1],data[result[sum-1]]);
return 0;
}