Submission #209380

#TimeUsernameProblemLanguageResultExecution timeMemory
209380super_j6Cat in a tree (BOI17_catinatree)C++14
100 / 100
69 ms12920 KiB
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; #define endl '\n' #define pi pair<int, int> #define f first #define s second const int maxn = 200000; int n, m; vector<int> graph[maxn]; pi dfs(int c){ if(graph[c].empty()) return {1, 1}; pi ret = dfs(graph[c][0]); if(ret.s == m) ret.f++, ret.s = 0; for(int i = 1; i < graph[c].size(); i++){ pi p = dfs(graph[c][i]); if(ret.s + p.s >= m) ret.f += p.f, ret.s = min(ret.s, p.s); else ret.f += p.f - 1, ret.s = max(ret.s, p.s); } ret.s++; return ret; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; for(int i = 1; i < n; i++){ int x; cin >> x; graph[x].push_back(i); } cout << dfs(0).f << endl; return 0; }

Compilation message (stderr)

catinatree.cpp: In function 'std::pair<int, int> dfs(int)':
catinatree.cpp:19:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 1; i < graph[c].size(); i++){
                 ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...