Submission #1096938

#TimeUsernameProblemLanguageResultExecution timeMemory
1096938andrei_iorgulescuThe Xana coup (BOI21_xanadu)C++14
100 / 100
109 ms27476 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int inf = 1e9; int n, v[100005]; vector<int> g[100005], f[100005]; bool viz[100005]; int dp[100005][2][2]; void dfs(int nod) { viz[nod] = true; for (auto it : g[nod]) if (!viz[it]) f[nod].push_back(it), dfs(it); } void solve(int nod) { for (auto fiu : f[nod]) solve(fiu); for (int sf = 0; sf < 2; sf++) { for (int cf = 0; cf < 2; cf++) { vector<vector<int>> d(f[nod].size() + 1); for (int i = 0; i < d.size(); i++) d[i].resize(2); d[0][0] = cf; d[0][1] = inf; for (int i = 1; i < d.size(); i++) { int fiu = f[nod][i - 1]; for (int cr = 0; cr < 2; cr++) { d[i][cr] = inf; for (int uu = 0; uu < 2; uu++) d[i][cr] = min(d[i][cr], d[i - 1][cr ^ uu] + dp[fiu][cf][uu]); } } dp[nod][sf][cf] = d[d.size() - 1][sf ^ cf ^ v[nod]]; } } } signed main() { cin >> n; for (int i = 1; i < n; i++) { int x, y; cin >> x >> y; g[x].push_back(y); g[y].push_back(x); } for (int i = 1; i <= n; i++) cin >> v[i]; dfs(1); solve(1); int kk = min(dp[1][0][0], dp[1][0][1]); if (kk >= inf) cout << "impossible"; else cout << kk; return 0; }

Compilation message (stderr)

xanadu.cpp: In function 'void solve(long long int)':
xanadu.cpp:31:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |             for (int i = 0; i < d.size(); i++)
      |                             ~~^~~~~~~~~~
xanadu.cpp:35:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |             for (int i = 1; i < d.size(); i++)
      |                             ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...