Submission #1297593

#TimeUsernameProblemLanguageResultExecution timeMemory
1297593Hamed_GhaffariPaths (BOI18_paths)C++20
100 / 100
259 ms92764 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MXN = 3e5+5; int n, m, k, a[MXN]; vector<int> g[MXN]; ll dp[MXN][1<<5], ans; int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n >> m >> k; for(int i=1; i<=n; i++) cin >> a[i], a[i]--, dp[i][1<<a[i]] = 1; for(int i=1,u,v; i<=m; i++) { cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } for(int msk=0; msk<(1<<k); msk++) for(int v=1; v<=n; v++) { ans += dp[v][msk]; for(int u : g[v]) if(!(msk>>a[u]&1)) dp[u][msk^(1<<a[u])] += dp[v][msk]; } cout << ans-n << '\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...