#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int e[N], ne[N];
int n, h, k;
int main()
{
cin >> h >> n >> k;
while(n --)
{
int add, data, next;
cin >> add >> data >> next;
e[add] = data, ne[add] = next;
}
vector<int> a;
for(int i = h; ~i; i = ne[i]) a.push_back(i);
for(int i = 0; i < a.size(); i += k) reverse(a.begin() + i, min(a.begin() + i + k, a.end()));
reverse(a.begin(), a.end());
for(int i = 0; i < a.size(); i++)
{
if(i == a.size() - 1)
{
printf("%05d %d -1\n", a[i], e[a[i]]);
break;
}
printf("%05d %d %05d\n", a[i], e[a[i]], a[i + 1]);
}
}
【PAT乙级】1110 区块反转
最新推荐文章于 2025-01-05 10:57:17 发布