Submission #566220

#TimeUsernameProblemLanguageResultExecution timeMemory
566220tranxuanbachPaths (BOI18_paths)C++17
100 / 100
683 ms97164 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define endl '\n' #define fi first #define se second #define For(i, l, r) for (auto i = (l); i < (r); i++) #define ForE(i, l, r) for (auto i = (l); i <= (r); i++) #define FordE(i, l, r) for (auto i = (l); i >= (r); i--) #define Fora(v, a) for (auto v: (a)) #define bend(a) (a).begin(), (a).end() #define isz(a) ((signed)(a).size()) using ll = long long; using ld = long double; using pii = pair <int, int>; using vi = vector <int>; using vpii = vector <pii>; using vvi = vector <vi>; const int N = 3e5 + 5, K = 5; int n, m, k; int a[N]; vi adj[N]; ll dp[N][1 << K]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("KEK.inp", "r", stdin); // freopen("KEK.out", "w", stdout); cin >> n >> m >> k; ForE(u, 1, n){ cin >> a[u]; a[u]--; } ForE(i, 1, m){ int u, v; cin >> u >> v; adj[u].emplace_back(v); adj[v].emplace_back(u); } ForE(u, 1, n){ dp[u][1 << a[u]] = 1; } For(msk, 1, (1 << k)){ ForE(u, 1, n){ Fora(v, adj[u]){ if (!(msk >> a[v] & 1)){ dp[v][msk | (1 << a[v])] += dp[u][msk]; } } } } ll ans = 0; For(msk, 1, (1 << k)){ if (__builtin_popcount(msk) == 1){ continue; } ForE(u, 1, n){ ans += dp[u][msk]; } } cout << ans << endl; } /* ==================================================+ INPUT: | --------------------------------------------------| --------------------------------------------------| ==================================================+ OUTPUT: | --------------------------------------------------| --------------------------------------------------| ==================================================+ */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...