Submission #1089738

#TimeUsernameProblemLanguageResultExecution timeMemory
1089738juicyAmusement Park (CEOI19_amusementpark)C++17
0 / 100
0 ms348 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif int main() { ios::sync_with_stdio(false); cin.tie(nullptr); const int M = 998244353; auto add = [&](int &x, int y) { if ((x += y) >= M) { x -= M; } }; int n, m; cin >> n >> m; vector<vector<array<int, 2>>> g(n); while (m--) { int u, v; cin >> u >> v; --u, --v; g[u].push_back({v, 1}); g[v].push_back({u, 0}); } vector<int> dp(1 << n), cnt(1 << n); dp[0] = 0; cnt[0] = 1; for (int i = 0; i < 1 << n; ++i) { for (int j = 0; j < n; ++j) { if (!(i >> j & 1)) { int c = 0; for (auto [k, x] : g[j]) { if (i >> k & 1) { c += x; } } int l = i | 1 << j; add(dp[l], dp[i]); add(dp[l], (long long) cnt[i] * c % M); add(cnt[l], cnt[i]); } } } cout << dp.back(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...