Submission #926984

#TimeUsernameProblemLanguageResultExecution timeMemory
926984vjudge1Paths (BOI18_paths)C++17
43 / 100
3070 ms20948 KiB
#include<bits/stdc++.h> using namespace std; const int N = (int)3e5+3; const int MOD = (int)1e6+3; int n, m, k, a[N], cnt[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 main() { ios_base::sync_with_stdio(NULL); cin.tie(0); cin >> n >> m >> k; for(int i = 1; i <= n; ++i) { cin >> 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); } if(k > 3) { ans=0; for(int i = 1; i <= n; ++i) { dfs(i); } cout << ans-n; return 0; } for(int i = 1; i <= n; ++i) { int cur = 0; memset(cnt, 0, sizeof(cnt)); for(auto x : g[i]) { ans += 2*(cur-cnt[a[x]]); cur++; cnt[a[x]]++; } } cout << ans; 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...