#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |