Submission #914309

#TimeUsernameProblemLanguageResultExecution timeMemory
914309dsyzPaths (BOI18_paths)C++17
100 / 100
956 ms96056 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define MAXN (300005) ll N,M,K; vector<ll> v[MAXN]; ll colour[MAXN], dp[MAXN][1ll<<5]; int main() { ios_base::sync_with_stdio(false);cin.tie(0); cin>>N>>M>>K; for(ll i = 0;i < N;i++){ cin>>colour[i]; colour[i]--; dp[i][1ll<<colour[i]] = 1; } for(ll i = 0;i < M;i++){ ll a,b; cin>>a>>b; a--, b--; v[a].push_back(b); v[b].push_back(a); } for(ll bitmask = 0;bitmask < (1ll<<5);bitmask++){ for(ll x = 0;x < N;x++){ for(auto u : v[x]){ if((bitmask & (1ll<<colour[u])) == 0){ dp[u][bitmask | (1ll<<colour[u])] += dp[x][bitmask]; } } } } ll ans = 0; for(ll bitmask = 0;bitmask < (1ll<<5);bitmask++){ for(ll x = 0;x < N;x++){ ans += dp[x][bitmask]; } } cout<<ans - N<<'\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...