#include <bits/stdc++.h>
using namespace std ;
#define int long long
int arr[100003] ;
vector <int> adj[100003] ;
int dp[10][100003][1<<5] ;
signed main(){
int n,m,k,i,j ;
cin >> n >> m >> k ;
for (i = 1 ; i <= n ; i ++){
cin >> arr[i] ;
arr[i]-- ;
dp[0][i][1<<arr[i]]=1 ;
}
for (i = 0 ; i < m ; i ++){
int a,b ;
cin >> a >> b ;
adj[a].push_back(b) ;
adj[b].push_back(a) ;
}
for (int ii = 1 ; ii <= 5 ; ii ++){
for (i = 1 ; i <= n ; i ++){
for (j = 0 ; j < (1<<k) ; j ++){
if (j&(1<<arr[i])){
for (auto a : adj[i]){
dp[ii][i][j]+=dp[ii-1][a][j^(1<<arr[i])] ;
}
}
}
}
}
int tt=0 ;
for (int ii = 1 ; ii <= 5 ; ii ++) for (i = 1 ; i <= n ; i ++) for (j = 0 ; j < (1<<k) ; j ++) tt+=dp[ii][i][j] ;
cout << tt << endl ;
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... |