Submission #927159

# Submission time Handle Problem Language Result Execution time Memory
927159 2024-02-14T10:42:58 Z vjudge1 Paths (BOI18_paths) C++17
70 / 100
212 ms 53844 KB
#include<bits/stdc++.h>

using namespace std;


const int N = (int)3e5+3;
const int MOD = (int)1e6+3;
const int B1 = 450;
const int B2 = 450;

int n, m, k, a[N], kol[6];
vector<int> g[N];
bool used[6];
long long ans;

void dfs(int v) {
	used[a[v]] = 1;
	ans++;
	for(auto to : g[v]) {
		if(!used[a[to]]) {
			dfs(to);
		}
	}
	used[a[v]] = 0;
}

int cnt[N][32];
int oo[6][32];

int main() {
    ios_base::sync_with_stdio(NULL);
    cin.tie(0);
	cin >> n >> m >> k;
	for(int i = 1; i <= n; ++i) {
		cin >> a[i];
		a[i]--;
	}
	for(int i = 1; i <= m; ++i) {
		int u, v;
		cin >> u >> v;
		if(a[u] == a[v]) {
			continue;
		}
		ans += 2;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	for(int i = 1; i <= n; ++i) {
		int cur = 0;
		memset(kol, 0, sizeof(kol));
		for(auto x : g[i]) {
			ans += 2*(cur-kol[a[x]]);
			cur++;	
			kol[a[x]]++;
		}
	}
	for(int i = 1; i <= n; ++i) {
		for(int mask = 0; mask < (1 << k); ++mask) {
			for(int j : g[i]) {
				if(!(mask >> a[j] & 1)) {
					continue;
				}		
				cnt[i][mask]++;
			}
		}
	}
	for(int i = 1; i <= n; ++i) {
		memset(oo, 0, sizeof(oo));
		memset(kol, 0, sizeof(kol));
		for(int j : g[i]) {
			kol[a[j]]++;
			for(int mask = 0; mask < (1 << k); ++mask) {
				oo[a[j]][mask] += cnt[j][mask];
			}
		}
		for(int c = 0; c < k; ++c) {
			if(c == a[i]) {
				continue;
			}
			for(int d = 0; d < k; ++d) {
				if(d == a[i] || d == c) {
					continue;
				}	
				int can = (1 << k)-1;
				can ^= (1 << a[i]);
		        can ^= (1 << c);
		        can ^= (1 << d);
		        ans += 1ll*oo[c][can]*kol[d];
			}
		}
	}
	cout << ans;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 8536 KB Output is correct
2 Correct 2 ms 8540 KB Output is correct
3 Correct 1 ms 8540 KB Output is correct
4 Correct 2 ms 8540 KB Output is correct
5 Correct 2 ms 8540 KB Output is correct
6 Correct 2 ms 8540 KB Output is correct
7 Correct 2 ms 8536 KB Output is correct
8 Correct 2 ms 8540 KB Output is correct
9 Correct 1 ms 8540 KB Output is correct
10 Correct 2 ms 8540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 52 ms 13652 KB Output is correct
2 Correct 45 ms 10744 KB Output is correct
3 Correct 168 ms 53156 KB Output is correct
4 Correct 55 ms 15184 KB Output is correct
5 Correct 37 ms 8540 KB Output is correct
6 Correct 131 ms 41700 KB Output is correct
7 Correct 168 ms 53076 KB Output is correct
8 Correct 175 ms 53844 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 8536 KB Output is correct
2 Correct 2 ms 8540 KB Output is correct
3 Correct 1 ms 8540 KB Output is correct
4 Correct 2 ms 8540 KB Output is correct
5 Correct 2 ms 8540 KB Output is correct
6 Correct 2 ms 8540 KB Output is correct
7 Correct 2 ms 8536 KB Output is correct
8 Correct 2 ms 8540 KB Output is correct
9 Correct 1 ms 8540 KB Output is correct
10 Correct 2 ms 8540 KB Output is correct
11 Correct 52 ms 13652 KB Output is correct
12 Correct 45 ms 10744 KB Output is correct
13 Correct 168 ms 53156 KB Output is correct
14 Correct 55 ms 15184 KB Output is correct
15 Correct 37 ms 8540 KB Output is correct
16 Correct 131 ms 41700 KB Output is correct
17 Correct 168 ms 53076 KB Output is correct
18 Correct 175 ms 53844 KB Output is correct
19 Correct 52 ms 13588 KB Output is correct
20 Correct 57 ms 10580 KB Output is correct
21 Correct 197 ms 53196 KB Output is correct
22 Correct 55 ms 15184 KB Output is correct
23 Correct 40 ms 8540 KB Output is correct
24 Correct 137 ms 41256 KB Output is correct
25 Correct 166 ms 53156 KB Output is correct
26 Correct 177 ms 53844 KB Output is correct
27 Correct 65 ms 12104 KB Output is correct
28 Correct 76 ms 13620 KB Output is correct
29 Correct 209 ms 53552 KB Output is correct
30 Correct 149 ms 34356 KB Output is correct
31 Correct 141 ms 34532 KB Output is correct
32 Correct 212 ms 53588 KB Output is correct
33 Correct 2 ms 8540 KB Output is correct
34 Correct 2 ms 8540 KB Output is correct
35 Correct 1 ms 8540 KB Output is correct
36 Correct 2 ms 8536 KB Output is correct
37 Correct 3 ms 8540 KB Output is correct
38 Correct 2 ms 8536 KB Output is correct
39 Correct 2 ms 8540 KB Output is correct
40 Correct 2 ms 8540 KB Output is correct
41 Correct 2 ms 8540 KB Output is correct
42 Correct 1 ms 8540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 8540 KB Output is correct
2 Incorrect 35 ms 9788 KB Output isn't correct
3 Halted 0 ms 0 KB -