#include <bits/stdc++.h>
using namespace std;
#define int long long
#define inf 0x3F3F3F3F3F3F3F3F
const int MXN = 3e5 + 1;
const int K = 5;
const int mod = 1e9 + 7;
int n, m, k;
vector<int> adj[MXN];
int dp[(1 << K)][MXN];
int col[MXN];
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> k;
for (int i = 1; i <= n; i++) cin >> col[i], col[i]--;
while (m--)
{
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
for (int i = 1; i <= n; i++) dp[(1 << col[i])][i] = 1;
int res = 0;
for (int msk = 1; msk < (1 << k); msk++)
{
for (int i = 1; i <= n; i++)
{
for (int &j : adj[i])
{
if (msk >> col[j] & 1) continue;
dp[msk | (1 << col[j])][j] += dp[msk][i];
}
res += dp[msk][i];
}
}
cout << res - n << '\n';
}
# | 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... |