Submission #1095286

#TimeUsernameProblemLanguageResultExecution timeMemory
1095286andrewpPaths (BOI18_paths)C++14
0 / 100
135 ms31316 KiB
//Dedicated to my love, ivaziva #pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; #define int long long using pii = pair<int, int>; using ll = int64_t; #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define dbg(x) cerr<<#x<<": "<<x<<'\n'; #define dbga(A,l_,r_){for(int i_=l_;i_<=r_;i_++)cerr<<A[i_]<<' ';cerr<<'\n';} #define dbgv(a_){for(auto x_:a_) cerr<<x_<<' ';cerr<<'\n';} const int N = 3e5 + 20; int n, m, k, a[N], ans, cnt; vector<int> g[N]; bool was[N]; void dfs(int x) { was[x] = true; int f = 0, s = 0, t = 0; for (int u : g[x]) { if (a[u] == 1) { f++; } else if (a[u] == 2) { s++; } else { t++; } if (!was[u]) { dfs(u); } } if (a[x] == 1) { ans += (s * t); cnt += (s * t); ans += s; ans += t; } else if (a[x] == 2) { ans += (f * t); cnt += (f * t); ans += f; ans += t; } else { ans += (f * s); cnt += (f * s); ans += f; ans += s; } } int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cerr.tie(nullptr); cin >> n >> m >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; was[i] = false; } for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } ans = 0; dfs(1); ans += cnt; cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...