Submission #1196061

#TimeUsernameProblemLanguageResultExecution timeMemory
1196061KALARRYBurza (COCI16_burza)C++20
160 / 160
59 ms988 KiB
//chockolateman #include<bits/stdc++.h> using namespace std; int N,K,depth[405],score[405],first_leaf[405],counter,dp[(1<<20)]; vector<int> nodes_per_depth[405]; vector<int> adj[405]; void dfs1(int v,int p) { first_leaf[v] = N+1; for(auto u : adj[v]) if(u != p) { depth[u] = depth[v] + 1; nodes_per_depth[depth[u]].push_back(u); dfs1(u,v); score[v] += score[u]; first_leaf[v] = min(first_leaf[v],first_leaf[u]); } if(depth[v]==K-1) { score[v]++; first_leaf[v] = ++counter; } } int main() { scanf("%d%d",&N,&K); for(int a,b,i = 1 ; i < N ; i++) { scanf("%d%d",&a,&b); adj[a].push_back(b); adj[b].push_back(a); } depth[1] = -1; //to push others for zero indexing dfs1(1,1); if(K >= 21) printf("DA\n"); else { for(int mask = 1 ; mask < (1<<K) ; mask++) { for(int j = 0 ; j <= K-1 ; j++) if(mask & (1<<j)) { for(auto x : nodes_per_depth[j]) { int l = first_leaf[x]; int r = first_leaf[x] + score[x] - 1; if(score[x]==0) continue; int new_mask = mask ^ (1<<j); dp[mask] = max(dp[mask],dp[new_mask]); if(l <= dp[new_mask] + 1) dp[mask] = max(dp[mask],r); } } } if(dp[(1<<K) - 1] >= score[1]) printf("DA\n"); else printf("NE\n"); } return 0; }

Compilation message (stderr)

burza.cpp: In function 'int main()':
burza.cpp:32:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |     scanf("%d%d",&N,&K);
      |     ~~~~~^~~~~~~~~~~~~~
burza.cpp:35:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |         scanf("%d%d",&a,&b);
      |         ~~~~~^~~~~~~~~~~~~~
#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...