Submission #1269136

#TimeUsernameProblemLanguageResultExecution timeMemory
1269136vukhacminhPaths (BOI18_paths)C++20
100 / 100
262 ms93876 KiB
/** * Author : Vu Khac Minh **/ #include <bits/stdc++.h> #define ll long long #define BIT(x,i) (((x)>>(i))&(1)) #define MASK(x) ((1ll)<<(x)) using namespace std; const int maxn = 3e5 + 5; const int mod = 1e9+7; ll res, n,k,m,a[maxn],dp[maxn][MASK(5)]; vector<int> adj[maxn]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>k; for(int i =1;i<=n;i++) { cin>>a[i]; a[i]--; } for(int i = 1;i<=m;i++) { int u,v; cin>>u>>v; adj[u].push_back(v); adj[v].push_back(u); } for(int i = 1;i<=n;i++) dp[i][MASK(a[i])] = 1; for(int mask = 1;mask<MASK(k);mask++) { for(int u = 1;u<=n;u++) { for(auto v : adj[u]) if(!BIT(mask,a[v])) { dp[v][mask|MASK(a[v])] = ( dp[v][mask|MASK(a[v])] + dp[u][mask]); } if(__builtin_popcount(mask) > 1)res = (res +dp[u][mask]); } } cout<<res<<'\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...