Submission #280070

# Submission time Handle Problem Language Result Execution time Memory
280070 2020-08-22T13:17:57 Z 3zp Mergers (JOI19_mergers) C++14
0 / 100
214 ms 21744 KB
#include<bits/stdc++.h>
using namespace std;
const int mN = 500009;
vector<int> V[mN];
int L[mN],R[mN],A[mN], St[mN], En[mN], S[mN], Good[mN], Deg[mN], Sz[mN], Min[mN], Max[mN];
int c = 1;
int good_cnt = 0;
void dfs1(int x, int p){
    L[x] = c;
    R[x] = c;
    A[c] = x;
    c++;
    for(int y : V[x]){
        if(y == p) continue;
        dfs1(y, x);
        R[x] = R[y];
    }
}
void dfs2(int x, int p){
    if(Good[x]) Sz[x] = 1;
    for(int y : V[x]){
        if(y == p) continue;
        dfs2(y, x);
        Sz[x] += Sz[y];
    }

    if(x > 1 && (Good[x] || (Sz[x] > 0 && Sz[x] < good_cnt))){
        Deg[x]++;
        Deg[p]++;
    }
}
void dfs3(int x, int p){
    Min[x] = St[S[x]];
    Max[x] = En[S[x]];
    for(int y : V[x]){
        if(y == p) continue;
        dfs3(y, x);
        Min[x] = min(Min[x], Min[y]);
        Max[x] = max(Max[x], Max[y]);
    }
    if(Min[x] == L[x] && Max[x] == R[x])
        Good[x] = 1;


}
main(){
    int n, k;
    cin >> n >> k;
    for(int i = 1; i < n; i++){
        int a, b;
        cin >> a >> b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
    for(int i = 1; i <= n; i++)
        cin >> S[i];
    dfs1(1, 0);
    for(int i = 1; i <= n; i++){
        int x = A[i];
        if(!St[S[x]]) St[S[x]] = i;
        En[S[x]] = i;
    }
    dfs3(1, 0);
    dfs2(1, 0);
    int leaf_cnt = 0;
    for(int i = 1; i <= n; i++)
        if(Deg[i] == 1) leaf_cnt++;
    cout << (leaf_cnt + 1) / 2 << endl;
}

Compilation message

mergers.cpp:46:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   46 | main(){
      |      ^
# Verdict Execution time Memory Grader output
1 Correct 8 ms 12160 KB Output is correct
2 Correct 8 ms 12160 KB Output is correct
3 Incorrect 8 ms 12160 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 12160 KB Output is correct
2 Correct 8 ms 12160 KB Output is correct
3 Incorrect 8 ms 12160 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 12160 KB Output is correct
2 Correct 8 ms 12160 KB Output is correct
3 Incorrect 8 ms 12160 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 180 ms 19572 KB Output is correct
2 Correct 214 ms 21744 KB Output is correct
3 Incorrect 13 ms 12416 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 12160 KB Output is correct
2 Correct 8 ms 12160 KB Output is correct
3 Incorrect 8 ms 12160 KB Output isn't correct
4 Halted 0 ms 0 KB -