# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
418825 | ly20 | Village (BOI20_village) | C++17 | 4 ms | 2948 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 112345;
vector <int> grafo[MAXN];
long long mn, mx;
int rmn[MAXN], rmx[MAXN];
int cur[MAXN];
int grau[MAXN];
int main() {
int n;
scanf("%d", &n);
for(int i = 0; i < n - 1; i++) {
int a, b;
scanf("%d %d", &a, &b);
grafo[a].push_back(b);
grafo[b].push_back(a);
grau[a]++; grau[b]++;
}
queue <int> fila;
for(int i = 1; i <= n; i++) {
rmn[i] = i;
if(grau[i] == 1) fila.push(i);
}
while(!fila.empty()) {
int cur = fila.front(); fila.pop();
int p = grafo[cur][0];
for(int i = 0 ;i < grafo[cur].size(); i++) {
int viz = grafo[cur][i];
grau[viz]--;
if(grau[viz] == 1) fila.push(viz);
if(grau[viz] != 0) p = viz;
}
if(rmn[cur] == cur) {
swap(rmn[cur], rmn[p]);
mn += 2;
}
}
printf("%lld %lld\n", mn, mn);
for(int i = 1; i <= n; i++) {
printf("%d ", rmn[i]);
}
printf("\n");
for(int i = 1; i <= n; i++) {
printf("%d ", rmn[i]);
}
printf("\n");
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |