Submission #440949

#TimeUsernameProblemLanguageResultExecution timeMemory
440949BeanZPaths (BOI18_paths)C++14
53 / 100
323 ms62648 KiB
// I_Love_LPL 11m #include <bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' const int N = 1e5 + 5; long long mod = 998244353; const int lim = 4e5 + 5; const int lg = 22; const int base = 311; const long double eps = 1e-6; ll dp[N][(2 << 5) + 5], c[N]; vector<ll> node[N]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); if (fopen("tests.inp", "r")){ freopen("test.inp", "r", stdin); freopen("test.out", "w", stdout); } ll n, m, k; cin >> n >> m >> k; for (int i = 1; i <= n; i++) cin >> c[i]; for (int i = 1; i <= m; i++){ ll u, v; cin >> u >> v; node[u].push_back(v); node[v].push_back(u); } for (int i = 1; i <= n; i++){ dp[i][(1 << (c[i] - 1))] = 1; } ll ans = 0; for (int i = 0; i < (1 << k); i++){ for (int g = 1; g <= n; g++){ if (i & (1 << (c[g] - 1))){ for (auto d : node[g]){ dp[g][i] += dp[d][i ^ (1 << (c[g] - 1))]; } } ans = ans + dp[g][i]; } } cout << ans - n; } /* Ans: Out: */

Compilation message (stderr)

paths.cpp: In function 'int main()':
paths.cpp:18:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |         freopen("test.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
paths.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen("test.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...