题解:P14455 [ICPC 2025 Xi'an R] Imagined Holly
思考这个
移项得到:
也就是说,我们如果随便钦定一个跟,那么久可以通过
然后直接输出即可。时间复杂度
#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
int a[N][N], l[N][N];
bool f[N][N]; int cnt[N], fa[N];
int main() {
int n; cin >> n;
for(int i = 1;i <= n;i++)
for(int j = i;j <= n;j++)
cin >> a[i][j],
a[j][i] = a[i][j];
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
l[i][j] = (i == j ? i : (a[i][j] ^ a[1][i] ^ a[1][j]));
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= n;j++)
if(!f[i][l[i][j]])
f[i][l[i][j]] = 1, cnt[i]++;
} for(int i = 1;i <= n;i++) {
for(int j = 1;j <= n;j++)
if(cnt[l[i][j]] == (cnt[i] - 1))
fa[i] = l[i][j];
} for(int i = 2;i <= n;i++)
cout << i << " " << fa[i] << endl;
return 0;
}