Submission #332895

#TimeUsernameProblemLanguageResultExecution timeMemory
332895ly20Mergers (JOI19_mergers)C++17
10 / 100
51 ms37484 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 3123; int marc[MAXN], tp[MAXN], sub[MAXN][MAXN]; int n, k; vector <int> grafo[MAXN]; int vl[MAXN]; int resp = 0; void dfs1(int v, int p) { for(int i = 0; i < grafo[v].size(); i++) { int viz = grafo[v][i]; if(viz == p) continue; dfs1(viz, v); for(int j = 1; j <= k; j++) { sub[v][j] += sub[viz][j]; } vl[v] += vl[viz]; } bool ok = true; for(int i = 1; i <= k; i++) { if(sub[v][i] != marc[i] && sub[v][i] != 0) ok = false; } if(ok) vl[v]++; if(p == v && grafo[v].size() == 1) { int viz = grafo[v][0]; ok = true; for(int i = 1; i <= k; i++) { if(sub[viz][i] != marc[i] && sub[viz][i] != 0) ok = false; } if(ok) resp++; } if(p == v) return; if(ok && vl[v] == 1) resp++; } int main() { scanf("%d %d", &n, &k); for(int i = 0; i < n - 1; i++) { int a, b; scanf("%d %d", &a, &b); grafo[a].push_back(b); grafo[b].push_back(a); } for(int i = 1 ; i<= n; i++) { int a; scanf("%d", &a); marc[a]++; tp[i] = a; sub[i][a]++; } dfs1(1, 1); printf("%d\n", (resp + 1) / 2); return 0; }

Compilation message (stderr)

mergers.cpp: In function 'void dfs1(int, int)':
mergers.cpp:10:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     for(int i = 0; i < grafo[v].size(); i++) {
      |                    ~~^~~~~~~~~~~~~~~~~
mergers.cpp: In function 'int main()':
mergers.cpp:36:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   36 |     scanf("%d %d", &n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~~
mergers.cpp:39:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   39 |         scanf("%d %d", &a, &b);
      |         ~~~~~^~~~~~~~~~~~~~~~~
mergers.cpp:44:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   44 |         scanf("%d", &a);
      |         ~~~~~^~~~~~~~~~
#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...