Submission #1219780

#TimeUsernameProblemLanguageResultExecution timeMemory
12197804QT0RPaths (BOI18_paths)C++20
100 / 100
455 ms92832 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int kol[300002];
vector<int> graph[300002];
ll dp[300002][32];

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n,m,k;
    cin >> n >> m >> k;
    for (int i = 1; i<=n; i++){
        cin >> kol[i];
        kol[i]--;
        dp[i][1<<kol[i]]=1;
    }
    for (int i = 1,a,b; i<=m; i++){
        cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    ll ans=0;
    for (int i = 1; i<31; i++){
        for (int v = 1; v<=n; v++){
            for (auto u : graph[v]){
                int x = i|(1<<kol[u]);
                if (x!=i){
                    ans+=dp[v][i];
                    dp[u][x]+=dp[v][i];
                }
            }
        }
    }
    cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...