Submission #1066697

#TimeUsernameProblemLanguageResultExecution timeMemory
1066697vjudge1Amusement Park (CEOI19_amusementpark)C++17
42 / 100
28 ms604 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; bitset<1<<20>indep; ll dp[1<<20]; const ll mod=998244353; int EDG[20][20]; int main(){ int n,m; cin>>n>>m; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; EDG[a][b]=1; EDG[b][a]=1; } for(int i=1;i<1<<n;i++){ vector<int>v; for(int j=0;j<n;j++) if(i&1<<j) v.push_back(j+1); int bad=0; for(auto i:v) for(auto j:v) bad|=EDG[i][j]; indep[i]=!bad; } dp[0]=1; for(int i=1;i<1<<n;dp[i++]%=mod) for(int j=i;j;j=j-1&i)if(indep[j]){ int cnt=__builtin_popcount(j); dp[i]+=dp[i^j]*(cnt&1?1:-1); } cout<<(mod+1)/2*dp[(1<<n)-1]%mod*m%mod<<'\n'; }

Compilation message (stderr)

amusementpark.cpp: In function 'int main()':
amusementpark.cpp:30:26: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   30 |         for(int j=i;j;j=j-1&i)if(indep[j]){
      |                         ~^~
#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...