제출 #1279626

#제출 시각아이디문제언어결과실행 시간메모리
1279626DanielPr8Amusement Park (CEOI19_amusementpark)C++20
7 / 100
1 ms580 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector<ll>; using vvl = vector<vll>; using pll = pair<ll,ll>; #define f first #define s second #define pb push_back #define all(v) v.begin(),v.end() const int mod = 998244353; int main(){ ios_base::sync_with_stdio(0);cin.tie(NULL); ll n, m; cin >> n >> m; vvl g(n); vvl cn(n, vll(n)); for(ll a,b,i = 0; i < m; ++i){ cin >> a >> b; g[--a].pb(--b); cn[a][b]=cn[b][a]=1; } vvl dp(1<<n, vll(n)), mul(1<<n, vll(n)); for(ll i = 1; i < (1<<n); ++i){ for(ll j = 0; j < n; ++j){ if(!(i & (1<<j)))continue; ll cnt=0; for(ll x:g[j])if(i&(1<<x))cnt++; for(ll k = 0; k < n; ++k){ if(cn[k][j] || k<j){ dp[i][j] += dp[i^(1<<j)][k]+cnt*mul[i^(1<<j)][k]; dp[i][j]%=mod; mul[i][j] += mul[i^(1<<j)][k]; mul[i][j]%=mod; } } if((i^(1<<j))==0)mul[i][j]=1; } } cout << accumulate(all(dp.back()),0ll); }
#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...