Submission #1184830

#TimeUsernameProblemLanguageResultExecution timeMemory
1184830UnforgettableplAmusement Park (CEOI19_amusementpark)C++20
7 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int modulo = 998244353; const int div2 = 499122177; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,m; cin >> n >> m; vector<vector<int>> adj(n+1); vector<pair<int,int>> edges(m+1); for(int i=1;i<=m;i++){ int a,b; cin >> a >> b; adj[a].emplace_back(b); adj[b].emplace_back(a); edges.emplace_back(a,b); } vector<int> par(n+1); vector<vector<int>> cleanadj(n+1); vector<bool> visited(n+1); vector<int> depth(n+1); // TEMP vector<pair<int,int>> backedges(n+1); // TEMP END { function<void(int,int,int)> dfs = [&](int x,int p,int dep){ par[x]=p; visited[x]=true; depth[x]=dep; for(int&i:adj[x])if(i!=p){ if(visited[i]){ if(depth[i]<depth[x]){ backedges.emplace_back(i,x); } } else { dfs(i,x,dep+1); cleanadj[x].emplace_back(i); } } }; for(int i=1;i<=n;i++)if(!visited[i])dfs(i,0,0); } vector<bool> picked(n+1); vector<int> pre(n+1); function<void(int,int)> dfs = [&](int x,int curr){ visited[x]=true; if(picked[x])curr++; pre[x]=curr; for(int&i:cleanadj[x])dfs(i,curr); }; int ans = 0; for(int mask = 0;mask<(1<<n);mask++){ bool works = true; for(int i=0;i<n;i++){ if(mask&(1<<i) and par[i+1]==0)works=false; else if(mask&(1<<i))picked[i+1]=true; else picked[i+1]=false; } if(!works)continue; int curr = 1; fill(visited.begin(),visited.end(),false); for(int i=1;i<n;i++)if(!visited[i])dfs(i,0); for(auto&[a,b]:backedges){ if(pre[b]-pre[a]!=depth[b]-depth[a] and pre[b]-pre[a]!=0){ curr*=2; curr%=modulo; } } ans+=curr; ans%=modulo; } cout << (((ans*m)%modulo)*div2)%modulo << '\n'; }
#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...