Submission #1107365

#TimeUsernameProblemLanguageResultExecution timeMemory
1107365vjudge1Paths (BOI18_paths)C++17
100 / 100
281 ms96084 KiB
#include<bits/stdc++.h> #define int long long using namespace std; int n, m, k, color[300300], ans, dp[300300][32]; vector<int> vc[300300]; int32_t main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> m >> k; for(int i = 1; i <= n; ++i) cin >> color[i], color[i]--; for(int i = 0; i < m; ++i){ int u, v; cin >> u >> v; vc[u].push_back(v), vc[v].push_back(u); } for(int i = 1; i <= n; ++i) dp[i][(1<<color[i])] = 1; for(int mask = 0; mask < (1<<k); ++mask){ for(int i = 1; i <= n; ++i){ for(auto v:vc[i]){ if(!(mask&(1<<color[v]))) dp[v][mask|(1<<color[v])] += dp[i][mask]; } } } int ans = 0; for(int i = 1; i <= n; ++i) for(int j = 0; j < (1<<k); ++j) ans += dp[i][j]; cout << ans - 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...