AcWing 4277. 区块反转
原题链接
简单
作者:
NobleFire
,
2022-06-24 14:12:08
,
所有人可见
,
阅读 19
C++ 代码
#include <iostream>
#include <vector>
#define x first
#define y second
using namespace std;
const int N = 1e5 + 10;
int e[N], ne[N];
int main(){
int n, k, head;
cin >> head >> n >> k;
vector<pair<int, int>> a, b;
for (int i = 0; i < n; i ++ ){
int x, y, z;
cin >> x >> y >> z;
e[x] = y, ne[x] = z;
}
for (int i = head; i != -1; i = ne[i]) a.push_back({i, e[i]});
int l = a.size();
for (int i = 0; i <= l; i += k ){
for (int j = (l - i) / k * k; j < l && j < (l - i + k) / k * k ; j ++ )
b.push_back(a[j]);
}
for (int i = 0; i < b.size(); i ++ ) {
printf("%05d %d ", b[i].x, b[i].y);
if(i + 1 < b.size()) printf("%05d\n", b[i + 1].x);
else puts("-1");
}
return 0;
}