#include <bits/stdc++.h>
#define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
using namespace std;
const int inf=1e17;
const int N=3e5+5;
const int N1=1e5+5;
const int N2=5e6+6;
const int mod=1e9+7;
const int k1=447;
struct edge{
    int d,in;
};
struct edge1{
    int l,r;
};
vector<int>v;
vector<int>v1[N];
vector<int>v2;
int dp[5][5];
int cnt[5];
int ans=0;
void dfs(int x,string s,int st){
    s[v[x]-1]='1';
    if(st==4){
       ans++;
       return; 
    }
    for(int i=0;i<v1[x].size();i++){
        if(s[v[v1[x][i]]-1]=='0'){
        dfs(v1[x][i],s,st+1);
        }
    }
}
signed main(){
boost;
    int n,m,k;
    cin>>n>>m>>k;
    v.push_back(0);
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        v.push_back(x);
    }
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y;
        v1[x].push_back(y);
        v1[y].push_back(x);
        if(k>=2&&v[x]!=v[y]){
            ans+=2;
        }
        dp[v[x]][v[y]]++;
        dp[v[y]][v[x]]++;
    }
    if(k>=3){
        for(int i=1;i<=n;i++){
            for(int j=0;j<v1[i].size();j++){
                cnt[v[v1[i][j]]]++;
            }
            int cnt1=v1[i].size();
            if(cnt1==1){
                cnt[1]=0;
                cnt[2]=0;
                cnt[3]=0;
                cnt[4]=0;
                continue;
            }
            for(int j=0;j<v1[i].size();j++){
                int x=v1[i][j];
                if(v[x]!=v[i]){
                    ans+=(cnt1-cnt[v[x]]-cnt[v[i]])*2;
                }
                cnt1--;
                cnt[v[x]]--;
            }
            cnt[1]=0;
            cnt[2]=0;
            cnt[3]=0;
            cnt[4]=0;
        }
    }
if(k>=4){
    for(int i=1;i<=n;i++){
        dfs(i,"0000",1ll);
    }
}
    cout<<ans;
}  
| # | 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... |