#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
typedef long long ll;
using namespace __gnu_pbds;
using namespace std;
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
int M = 100'001;
vector<vector<int>> g(M);
vector<vector<int>> dp(M, vector<int>(2));
void dfs(int v, int p) {
for(auto u : g[v]) if(u!=p) dfs(u,v);
for(auto u : g[v]) {
if(u==p) continue;
dp[v][0] += min(dp[u][0]+1, dp[u][1]);
dp[v][1] += dp[u][0]+1;
}
for(auto u : g[v]) {
if(u==p) continue;
dp[v][1] = min(dp[v][1], dp[v][0]-min(dp[u][0]+1, dp[u][1]) + dp[u][0] + 1);
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n;
cin >> n;
for(int i=1; i<n; ++i) {
int a,b;
cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
dfs(1,0);
}
cout << 2*dp[1][1] << " 0\n";
for(int i=1; i<=n; ++i) cout << "1 "; cout << '\n';
for(int i=1; i<=n; ++i) cout << "1 "; cout << '\n';
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |