답안 #1050853

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1050853 2024-08-09T15:37:52 Z Jarif_Rahman Mergers (JOI19_mergers) C++17
34 / 100
3000 ms 14960 KB
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define sc second
using namespace std;
typedef long long int ll;
typedef string str;

int n, k;
vector<vector<int>> tree;
vector<int> sz;
vector<int> state, scnt;
vector<bool> sep;
int sep_cnt = 0;

void add(int nd, int ss, vector<int> &cnt){
    for(int x: tree[nd]) if(x != ss) add(x, nd, cnt);
    cnt[state[nd]]++;
}
void dfs(int nd, int ss){
    for(int x: tree[nd]) if(x != ss) dfs(x, nd);
    vector<int> cnt(k, 0);
    add(nd, ss, cnt);
    for(int i = 0; i < k; i++) sep[nd] = sep[nd]&(cnt[i] == 0 || cnt[i] == scnt[i]);
    if(sep[nd]) sep_cnt++;
}

int ans = 0;
bool exta = 0;
int dfs2(int nd, int ss, int sep_cnt_ = 0){
    int c = 0;
    for(int x: tree[nd]) if(x != ss) c+=dfs2(x, nd, sep_cnt_+sep[nd]);
    if(ss == -1) return 0;
    if(!sep[nd]) return c;
    c++;
    if(c == 1) ans++;
    else if(c+sep_cnt_ == sep_cnt) exta = 1;
    return c;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> k;
    tree.resize(n);
    state.resize(n);
    scnt.resize(k, 0);
    sep.resize(n, 1);

    for(int i = 0; i < n-1; i++){
        int a, b; cin >> a >> b; a--, b--;
        tree[a].push_back(b);
        tree[b].push_back(a);
    }
    for(int i = 0; i < n; i++){
        cin >> state[i]; state[i]--;
        scnt[state[i]]++;
    }

    dfs(0, -1);
    dfs2(0, -1);
    ans+=exta;
    ans++;
    ans/=2;
    cout << ans << "\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 6 ms 692 KB Output is correct
27 Correct 5 ms 604 KB Output is correct
28 Correct 23 ms 812 KB Output is correct
29 Correct 7 ms 604 KB Output is correct
30 Correct 2 ms 860 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 39 ms 852 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
34 Correct 1 ms 604 KB Output is correct
35 Correct 5 ms 604 KB Output is correct
36 Correct 2 ms 604 KB Output is correct
37 Correct 8 ms 604 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 6 ms 656 KB Output is correct
40 Correct 1 ms 604 KB Output is correct
41 Correct 2 ms 604 KB Output is correct
42 Correct 4 ms 604 KB Output is correct
43 Correct 45 ms 888 KB Output is correct
44 Correct 1 ms 344 KB Output is correct
45 Correct 27 ms 604 KB Output is correct
46 Correct 6 ms 600 KB Output is correct
47 Correct 0 ms 348 KB Output is correct
48 Correct 3 ms 604 KB Output is correct
49 Correct 5 ms 604 KB Output is correct
50 Correct 14 ms 760 KB Output is correct
51 Correct 3 ms 600 KB Output is correct
52 Correct 1 ms 604 KB Output is correct
53 Correct 3 ms 604 KB Output is correct
54 Correct 2 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 1 ms 344 KB Output is correct
26 Correct 31 ms 8016 KB Output is correct
27 Correct 72 ms 7716 KB Output is correct
28 Correct 5 ms 600 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 600 KB Output is correct
31 Correct 180 ms 7904 KB Output is correct
32 Correct 1 ms 600 KB Output is correct
33 Execution timed out 3052 ms 14960 KB Time limit exceeded
34 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 27 ms 8148 KB Output is correct
2 Execution timed out 3016 ms 9160 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 6 ms 692 KB Output is correct
27 Correct 5 ms 604 KB Output is correct
28 Correct 23 ms 812 KB Output is correct
29 Correct 7 ms 604 KB Output is correct
30 Correct 2 ms 860 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 39 ms 852 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
34 Correct 1 ms 604 KB Output is correct
35 Correct 5 ms 604 KB Output is correct
36 Correct 2 ms 604 KB Output is correct
37 Correct 8 ms 604 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 6 ms 656 KB Output is correct
40 Correct 1 ms 604 KB Output is correct
41 Correct 2 ms 604 KB Output is correct
42 Correct 4 ms 604 KB Output is correct
43 Correct 45 ms 888 KB Output is correct
44 Correct 1 ms 344 KB Output is correct
45 Correct 27 ms 604 KB Output is correct
46 Correct 6 ms 600 KB Output is correct
47 Correct 0 ms 348 KB Output is correct
48 Correct 3 ms 604 KB Output is correct
49 Correct 5 ms 604 KB Output is correct
50 Correct 14 ms 760 KB Output is correct
51 Correct 3 ms 600 KB Output is correct
52 Correct 1 ms 604 KB Output is correct
53 Correct 3 ms 604 KB Output is correct
54 Correct 2 ms 604 KB Output is correct
55 Correct 1 ms 344 KB Output is correct
56 Correct 31 ms 8016 KB Output is correct
57 Correct 72 ms 7716 KB Output is correct
58 Correct 5 ms 600 KB Output is correct
59 Correct 0 ms 348 KB Output is correct
60 Correct 0 ms 600 KB Output is correct
61 Correct 180 ms 7904 KB Output is correct
62 Correct 1 ms 600 KB Output is correct
63 Execution timed out 3052 ms 14960 KB Time limit exceeded
64 Halted 0 ms 0 KB -