#include<iostream> #include<algorithm> usingnamespacestd; intmain(){ int first, k, n, temp; cin >> first >> n >> k; int data[100005], next[100005], list[100005]; for (int i = 0; i < n; i++) { cin >> temp; cin >> data[temp] >> next[temp]; //以地址为索引存储数据和下一个的地址 } int sum = 0;//不一定所有的输入的结点都是有用的,加个计数器 while (first != -1) { //对合理的输入进行计数,并且存起来,筛选掉断开的节点输入 list[sum++] = first; first = next[first]; } for (int i = 0; i < (sum - sum % k); i += k) //只需要对需要反转的部分反转即可 reverse(begin(list) + i, begin(list) + i + k); for (int i = 0; i < sum - 1; i++) //输出的时候注意最后一个元素的特殊性 printf("%05d %d %05d\n", list[i], data[list[i]], list[i + 1]); printf("%05d %d -1", list[sum - 1], data[list[sum - 1]]); return0; }