Submission #1043351

#TimeUsernameProblemLanguageResultExecution timeMemory
104335112345678Burza (COCI16_burza)C++17
0 / 160
0 ms348 KiB
#include <bits/stdc++.h> using namespace std; const int nx=405; int n, k, u, v, s[nx], cnt, idx[nx], lvl[nx]; vector<int> d[nx]; void solve(int u, int p) { lvl[u]=lvl[p]+1; pair<int, int> mx; for (auto v:d[u]) if (v!=p) solve(v, u), mx=max(mx, {s[v], v}); idx[u]=mx.second; pair<int, int> mx2; for (auto v:d[u]) if (v!=p&&v!=mx.second) mx2=max(mx2, {s[v], v}); if (mx2.first!=0) s[u]=mx2.first+1; else s[u]=0; } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>k; for (int i=1; i<n; i++) cin>>u>>v, d[u].push_back(v), d[v].push_back(u); solve(1, 1); //for (int i=1; i<=n; i++) cout<<"debug "<<i<<' '<<idx[i]<<' '<<s[i]<<'\n'; vector<int> t; t.push_back(1); while (1) { pair<int, int> mx; for (auto x:t) mx=max(mx, {s[x], x}); vector<int> tmp; for (auto x:t) for (auto v:d[x]) if (lvl[v]>lvl[u]&&v!=idx[mx.second]) tmp.push_back(v); if (tmp.empty()) break; t=tmp; cnt++; } if (cnt<k) cout<<"DA"; else cout<<"NE"; }
#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...