Submission #104739

# Submission time Handle Problem Language Result Execution time Memory
104739 2019-04-09T03:56:05 Z Hideo Mergers (JOI19_mergers) C++14
0 / 100
230 ms 263168 KB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define mk make_pair
#define fr first
#define sc second
#define vi vector < int >
#define vl vector < ll >
#define pi pair < int, int >
#define pii pair < int, pi >
#define vii vector < pi >

const int N = 5e5 + 7;
const int mod = 1e9 + 7;

int us[N], a[N], b[N], m[N], cur[N];
int n, k, gr = 1, ans;

vi g[N], t[N];

void dfs (int v = 1, int p = 0){
    for (int to : g[v]){
        if (to != p){
            dfs(to, v);
            cur[v] += cur[to];
        }
    }
    us[a[v]]++;
    if (us[a[v]] == 1)
        cur[v]--;
    if (us[a[v]] == m[a[v]]){
        cur[v]++;
        us[a[v]] = 0;
    }
    b[v] = gr;
    if (cur[v] == 0)
        gr++;
    for (int to : g[v]){
        if (to != p && b[to] != b[v]){
            t[b[v]].pb(b[to]);
            t[b[to]].pb(b[v]);
        }
    }
}

void findAns (int v = 1, int p = 0){
    if (t[v].size() == 1)
        ans++;
    for (int to : t[v])
        if (to != p)
            findAns(to, v);
}

main(){
    cin >> n >> k;
    for (int i = 1; i < n; i++){
        int a, b;
        scanf("%d%d", &a, &b);
        g[a].pb(b);
        g[b].pb(a);
    }
    for (int i = 1; i <= n; i++){
        scanf("%d", &a[i]);
        m[a[i]]++;
    }
    dfs();
    findAns();
    printf("%d", (ans + 1) / 2);
}

Compilation message

mergers.cpp:56:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
mergers.cpp: In function 'int main()':
mergers.cpp:60:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &a, &b);
         ~~~~~^~~~~~~~~~~~~~~~
mergers.cpp:65:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &a[i]);
         ~~~~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 23 ms 23808 KB Output is correct
2 Runtime error 230 ms 263168 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 23 ms 23808 KB Output is correct
2 Runtime error 230 ms 263168 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 23 ms 23808 KB Output is correct
2 Runtime error 230 ms 263168 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 109 ms 31892 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 23 ms 23808 KB Output is correct
2 Runtime error 230 ms 263168 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -