Submission #1143273

#TimeUsernameProblemLanguageResultExecution timeMemory
1143273SonicMLTriumphal arch (POI13_luk)C++20
30 / 100
171 ms18476 KiB
#include <iostream>
#include <vector>

using namespace std;

int const NMAX = 3e5;
vector <int> g[1 + NMAX];
int depth[1 + NMAX];

int ans = 0;

void DFS(int node, int parent, int arc, int builder) {
  depth[node] = depth[parent]+1;
  for(int i = 0;i < g[node].size();i++) {
    int to = g[node][i];
    if(to != parent) {
      arc++;
    }
  }
  int adder = arc / depth[node];
  if(arc % depth[node] != 0) {
    adder++;
  }
  builder = max(builder, adder);
  ans = max(ans, builder);
  for(int i = 0;i < g[node].size();i++) {
    int to = g[node][i];
    if(to != parent) {
      DFS(to, node, arc, builder);
    }
  }
}

int main() {

  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, 1, 0, 0);
  cout << ans << '\n';
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...