最后一个测试点
这个就是有一点点坑的地方,题目中给的结点数量不是所有都有用,意思是部分是需要丢掉的,所以导致后面再讨论进行翻转的时候,总数量不再是num,而是 新的值。
附本人AC代码:
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
struct Node {
int add,val, next;
};
map<int, Node>Ma;
int main() {
Node tmp;
int add, N, K, val;
scanf("%d%d%d", &add, &N, &K);
for (int i = 0; i < N; i++) {
scanf("%d%d%d", &tmp.add, &tmp.val, &tmp.next);
Ma[tmp.add] = tmp;
}
vector<Node>ans;
while (add != -1) {
ans.push_back(Ma[add]);
add = Ma[add].next;
}
for (int i=0; i + K <= ans.size(); i += K) {
reverse(ans.begin() + i, ans.begin() + i + K);
}
for (int i = 0; i < ans.size(); i++) {
if (i != ans.size() - 1) {
printf("%05d %d %05d\n", ans[i].add, ans[i].val, ans[i + 1].add);
}
else printf("%05d %d -1\n", ans[i].add, ans[i].val);
}
return 0;
}