Submission #1098066

#TimeUsernameProblemLanguageResultExecution timeMemory
1098066Alihan_8Paths (BOI18_paths)C++17
100 / 100
217 ms70740 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back using i64 = long long; signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m, k; cin >> n >> m >> k; vector <int> c(n); for ( auto &u: c ){ cin >> u; --u; } vector <vector<int>> adj(n); for ( int i = 0; i < m; i++ ){ int u, v; cin >> u >> v; --u, --v; adj[u].pb(v); adj[v].pb(u); } const int S = 1 << k; vector <vector<i64>> dp(n, vector <i64> (S, -1)); auto dfs = [&](auto dfs, int u, int mask) -> i64{ if ( dp[u][mask] != -1 ) return dp[u][mask]; i64 &ret = dp[u][mask]; ret = 0; for ( auto &v: adj[u] ){ if ( mask >> c[v] & 1 ) continue; ret += dfs(dfs, v, mask | (1 << c[v])) + 1; } return ret; }; i64 ans = 0; for ( int i = 0; i < n; i++ ){ ans += dfs(dfs, i, 1 << c[i]); } cout << ans; cout << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...