Submission #440224

#TimeUsernameProblemLanguageResultExecution timeMemory
440224DiriiPaths (BOI18_paths)C++14
100 / 100
493 ms100492 KiB
#include <bits/stdc++.h> #define ll long long #define cll const ll #define lp(a, b, c) for(ll a = b; a <= c; ++a) #define lpd(a, b, c) for(ll a = b; a >= c; --a) #define vec(a) vector<a> #define pp(a, b) pair<a, b> #define EACHCASE lpd(cs, read(), 1) #define Fname "f" using namespace std; template <typename T> inline void Read(T &x){ x = 0; char c; while(!isdigit(c = getchar())); do { x = x * 10 + c - '0'; } while (isdigit(c = getchar())); } ll read(){ ll tmp; cin >> tmp; return tmp; } void giuncute(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } void OF(){ freopen(Fname".inp", "r", stdin); freopen(Fname".out", "w", stdout); } cll mxn = 3e5 + 7, mxk = 5; ll n, m, k, a[mxn], dp[mxn][1 << mxk] = {{0}}, ans = 0; vec(ll) g[mxn], state[6]; inline ll cntbit(ll x){ if(!x) return 0; return cntbit(x >> 1) + (x & 1); } int main(){ giuncute(); cin >> n >> m >> k; lp(i, 1, n) a[i] = read() - 1, dp[i][1 << a[i]] = 1; lp(i, 1, m){ ll u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } lp(i, 1, (1 << mxk) - 1) if(i < (1 << k)) state[cntbit(i)].push_back(i); lp(i, 2, k){ lp(u, 1, n){ for(ll stt : state[i]){ if(stt & (1 << a[u])) for(ll v : g[u]) dp[u][stt] += dp[v][stt ^ (1 << a[u])]; ans += dp[u][stt]; } } } cout << ans; }

Compilation message (stderr)

paths.cpp: In function 'void OF()':
paths.cpp:33:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |     freopen(Fname".inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
paths.cpp:34:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |     freopen(Fname".out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...