답안 #1097383

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1097383 2024-10-07T06:39:31 Z Alihan_8 Mergers (JOI19_mergers) C++17
0 / 100
137 ms 262144 KB
#include <bits/stdc++.h>

using namespace std;

#define pb push_back
#define ar array

struct Dsu{
	vector <int> fa;
	
	Dsu(int n){
		fa.resize(n);
		iota(fa.begin(), fa.end(), 0);
	}
	
	int get(int x){ return x ^ fa[x] ? fa[x] = get(fa[x]) : x; }
	
	bool merge(int u, int v){
		u = get(u), v = get(v);
		
		if ( u == v ) return false;
		
		fa[v] = u;
		
		return true;
	} 
};

signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n, k; cin >> n >> k;
	
	vector <vector<int>> adj(n);
	
	for ( int i = 0; i + 1 < n; i++ ){
		int u, v; cin >> u >> v;
		
		--u, --v;
		
		adj[u].pb(v);
		adj[v].pb(u);
	}
	
	vector <int> s(n);
	
	for ( auto &x: s ){
		cin >> x; --x;
	}

	vector <vector<int>> cnt(n, vector <int> (k));
	
	auto dfs = [&](auto dfs, int u, int p) -> void{
		cnt[u][s[u]] = 1;
		
		for ( auto &v: adj[u] ){
			if ( v != p ){
				dfs(dfs, v, u);
				
				for ( int i = 0; i < k; i++ ){
					cnt[u][i] += cnt[v][i];
				}
			}
		}
	};
	
	dfs(dfs, 0, -1);
	
	vector <int> bad(n);
	
	for ( int u = 0; u < n; u++ ){
		bool flag = true;
		
		for ( int t = 0; t < k; t++ ){
			if ( cnt[u][t] > 0 && cnt[u][t] < cnt[0][t] ){
				flag = false;
			}
		}
		
		bad[u] = flag;
	}
	
	vector <int> sub(n);
	
	auto cals = [&](auto cals, int u, int p) -> void{
		sub[u] = bad[u];
		
		for ( auto &v: adj[u] ){
			if ( v != p ){
				cals(cals, v, u);
				
				sub[u] += sub[v];
			}
		}
	};
	
	cals(cals, 0, -1);
	
	int num = 0;
	
	for ( int u = 1; u < n; u++ ){
		if ( !bad[u] ) continue;
		
		if ( sub[u] == sub[0] || sub[u] == 1 ){
			num += 1;
		}
	}
	
	cout << (num + 1) / 2;
	
	cout << '\n';
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 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 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 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 Incorrect 1 ms 460 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 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 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 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 Incorrect 1 ms 460 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 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 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 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 Incorrect 1 ms 460 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 74 ms 31400 KB Output is correct
2 Runtime error 137 ms 262144 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 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 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 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 Incorrect 1 ms 460 KB Output isn't correct
17 Halted 0 ms 0 KB -