Submission #1043356

#TimeUsernameProblemLanguageResultExecution timeMemory
104335612345678Burza (COCI16_burza)C++17
32 / 160
1 ms604 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}); 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]=1; } 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<<' '<<s[i]<<'\n'; vector<int> t; t.push_back(1); while (1) { pair<int, int> mx; for (auto x:t) for (auto v:d[x]) if (lvl[v]>lvl[x]) mx=max(mx, {s[v], v}); //cout<<"node "<<mx.second<<'\n'; vector<int> tmp; for (auto x:t) for (auto v:d[x]) if (lvl[v]>lvl[x]&&v!=mx.second) tmp.push_back(v); if (tmp.empty()) break; t=tmp; cnt++; } //cout<<"cnt "<<cnt<<'\n'; 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...