Submission #1213442

#TimeUsernameProblemLanguageResultExecution timeMemory
1213442minhpkPaths (BOI18_paths)C++20
100 / 100
260 ms240220 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int a,b,c; vector <int > z[1000005]; int f[400005][1<<6]; int type[4000005]; int dp(int i,int j){ int k=__builtin_popcount(j); if (f[i][j]!=-1){ return f[i][j]; } f[i][j]=(k>1); for (auto p:z[i]){ if (!( (j >> type[p]) & 1 )){ f[i][j]+=dp(p, j|(1<<type[p]) ); } } return f[i][j]; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> a >> b >> c; for (int i=1;i<=a;i++){ cin >> type[i]; type[i]--; } for (int i=1;i<=b;i++){ int x,y; cin >> x >> y; z[x].push_back(y); z[y].push_back(x); } for (int i=1;i<=a;i++){ z[0].push_back(i); } memset(f,-1,sizeof f); cout << dp(0,0) << "\n"; 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...