제출 #1039387

#제출 시각아이디문제언어결과실행 시간메모리
1039387ef10Amusement Park (CEOI19_amusementpark)C++17
0 / 100
0 ms440 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; #define LL long long #define MODULE 998244353 int N,M; vector<int> adj[20]; LL dp[1<<18][20]; LL exp(LL a, LL b) { if (a==0) return 0; if (b == 0) return 1; LL ret = exp(a, b/2); ret = ret * ret; ret %= MODULE; if (b % 2) { ret *= a; ret %= MODULE; } return ret; } LL inv(LL x) { return exp(x, MODULE-2); } int main() { cin >> N >> M; for (int i = 0; i < M; i++) { int a,b; cin >> a >> b; a--;b--; adj[a].push_back(b); adj[b].push_back(a); } for (int i = 0; i < N; i++) { dp[1<<i][i]=1; } for (int i = 0; i < (1<<N); i++) { for (int j = 0; j < N; j++) { if (dp[i][j] == 0) continue; for (auto n : adj[j]) { if (i & (1<<n)) continue; dp[i | (1<<n)][n] += dp[i][j]; dp[i | (1<<n)][n] %= MODULE; } } } LL res = 0; for (int i = 0; i < N; i++) { res += dp[(1<<N)-1][i]; res %= MODULE; } //cout << res << endl; res *= M; res %= MODULE; res *= inv(2); res %= MODULE; cout << res << endl; }
#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...