이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
void BFS(const vector<vector<int>> &G, vector<bool> &vis, vector<int> &res) {
//Index, sum, layer
queue<tuple<int, int, int>> q;
q.push({0, 0, 0});
res[0] = 0;
while(!q.empty()) {
auto [index, sum, layer] = q.front();
q.pop();
vis[index] = true; sum += G[index].size() - 1; layer++;
int answer = max((sum + layer - 1) / layer, res[index]);
//int answer = max(ceil(sum / layer), res[index]);
for(const auto &element : G[index]) {
if(!vis[element]) {
q.push({element, sum, layer});
res[element] = answer;
}
}
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n = *istream_iterator<int>(cin);
vector<vector<int>> G(n, vector<int>());
G[0].push_back(0);
for(int i = 0; i < n - 1; i++) {
int a = *istream_iterator<int>(cin), b = *istream_iterator<int>(cin);
G[a - 1].push_back(b - 1);
G[b - 1].push_back(a - 1);
}
vector<bool> vis(n, false);
vector<int> res(n);
BFS(G, vis, res);
cout << *max_element(res.begin(), res.end());
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... |