Submission #1313515

#TimeUsernameProblemLanguageResultExecution timeMemory
1313515vlomaczkVillage (BOI20_village)C++20
0 / 100
6 ms8248 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...