Submission #480594

#TimeUsernameProblemLanguageResultExecution timeMemory
480594Sohsoh84Network (BOI15_net)C++17
100 / 100
494 ms61484 KiB
//: // ////: ///  / : //// / :
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pll;

#define all(x)			(x).begin(),(x).end()
#define X			first
#define Y			second
#define sep			' '
#define endl			'\n'
#define debug(x)		cerr << #x << ": " <<  x << endl;

const ll MAXN = 1e6 + 10;

int n, tin[MAXN], t;
vector<int> adj[MAXN], L;
vector<pll> ans;

void dfs(int v, int p) {
	tin[v] = ++t;
	if (adj[v].size() == 1)
		L.push_back(v);

	for (int u : adj[v])
		if (u != p)
			dfs(u, v);
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n;
	cin >> n;
	for (int i = 1; i < n; i++) {
		int u, v;
		cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}

	for (int i = 1; i <= n; i++) {
		if (adj[i].size() > 1) {
			dfs(i, 0);
			break;
		}
	}

	sort(all(L), [] (int a, int b) {
		return tin[a] < tin[b];	
	});

	for (int i = 0; i < L.size() / 2; i++)
		ans.push_back({L[i], L[i + L.size() / 2]});

	if (L.size() & 1) ans.push_back({L.back(), L.front()});
	
	cout << ans.size() << endl;
	for (pll e : ans) cout << e.X << sep << e.Y << endl;
	return 0;
}

Compilation message (stderr)

net.cpp: In function 'int main()':
net.cpp:54:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |  for (int i = 0; i < L.size() / 2; i++)
      |                  ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...