Submission #1158959

#TimeUsernameProblemLanguageResultExecution timeMemory
1158959domblyPaths (BOI18_paths)C++20
53 / 100
165 ms38556 KiB
#include <bits/stdc++.h> #define F first #define S second #define pb push_back #define int long long using namespace std; const int N = 2e5 + 10; const int inf = 1e15; const int mod = 998244353; vector<int> g[N]; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m,k; cin >> n >> m >> k; vector<int> a(n + 1); 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; g[u].pb(v); g[v].pb(u); } vector<vector<int>>dp(n + 1,vector<int>(1 << k)); for(int i = 1; i <= n; i++) dp[i][1 << (a[i])] = 1; for(int j = 1; j < (1 << k); j++) { for(int i = 1; i <= n; i++) { for(int to : g[i]) { if((1 << a[to]) & j) continue; dp[to][j | (1 << a[to])] += dp[i][j]; } } } int ans = 0; for(int i = 1; i <= n; i++) { for(int j = 1; j < (1 << k); j++) { if(__builtin_popcount(j) >= 2) ans += dp[i][j]; } } 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...