#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void dfs(int node, int color, vector<vector<int>>& graph, vector<bool>& visited, vector<int>& counts) {
visited[node] = true;
counts[color]++;
for (int neighbor : graph[node]) {
if (!visited[neighbor]) {
dfs(neighbor, 1 - color, graph, visited, counts);
}
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> graph(n + 1);
// Citirea drumurilor
for (int i = 0; i < n - 1; i++) {
int a, b;
cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
vector<bool> visited(n + 1, false);
vector<int> counts(2, 0); // counts[0] -> noduri albe, counts[1] -> noduri negre
// Pornim DFS de la nodul 1 (capitala)
dfs(1, 0, graph, visited, counts);
// Răspunsul este minimul dintre nodurile de culoare 0 și 1
cout << min(counts[0], counts[1]) << endl;
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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |