Submission #441082

#TimeUsernameProblemLanguageResultExecution timeMemory
441082BeanZPaths (BOI18_paths)C++14
100 / 100
642 ms187252 KiB
// I_Love_LPL 11m
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
const int N = 3e5 + 5;
long long mod = 998244353;
const int lim = 4e5 + 5;
const int lg = 22;
const int base = 311;
const long double eps = 1e-6;
ll dp[N][(2 << 5) + 5], c[N];
vector<ll> node[N];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    if (fopen("tests.inp", "r")){
        freopen("test.inp", "r", stdin);
        freopen("test.out", "w", stdout);
    }
    ll n, m, k;
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) cin >> c[i];
    for (int i = 1; i <= m; i++){
        ll u, v;
        cin >> u >> v;
        node[u].push_back(v);
        node[v].push_back(u);
    }
    for (int i = 1; i <= n; i++){
        dp[i][(1 << (c[i] - 1))] = 1;
    }
    ll ans = 0;
    for (int i = 0; i < (1 << k); i++){
        for (int g = 1; g <= n; g++){
            if (i & (1 << (c[g] - 1))){
                for (auto d : node[g]){
                    dp[g][i] += dp[d][i ^ (1 << (c[g] - 1))];
                }
            }
            ans = ans + dp[g][i];
        }
    }
    cout << ans - n;
}
/*
Ans:

Out:
*/

Compilation message (stderr)

paths.cpp: In function 'int main()':
paths.cpp:18:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |         freopen("test.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
paths.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen("test.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...