solution
- 所给结点中可能有多余结点,则不能直接用n作为结果链表长度
#include<iostream>
#include<vector>
using namespace std;
struct node{
int data, next;
}list[100000];
vector<int> l, ans, temp[100001];
int main(){
int first, n, k, addr, num = 0, cnt = 0;
scanf("%d%d%d", &first, &n, &k);
for(int i = 0; i < n; i++){
scanf("%d", &addr);
scanf("%d%d", &list[addr].data, &list[addr].next);
}
while(first != -1){
l.push_back(first);
first = list[first].next;
}
for(int i = 0; i < l.size(); i++){
temp[num].push_back(l[i]);
cnt++;
if(i != n - 1 && cnt == k){
num++;
cnt = 0;
}
}
for(int i = num; i >= 0; i--){
for(auto it : temp[i]){
ans.push_back(it);
}
}
for(int i = 0; i < ans.size(); i++){
if(i == 0) printf("%05d %d ", ans[i], list[ans[i]]);
else printf("%05d\n%05d %d ", ans[i], ans[i], list[ans[i]]);
}
printf("-1");
return 0;
}