제출 #869930

#제출 시각아이디문제언어결과실행 시간메모리
869930PagodePaivaThe Xana coup (BOI21_xanadu)C++17
20 / 100
1079 ms23088 KiB
#include<bits/stdc++.h> #define N 100010 #define inf 1e6 using namespace std; int n; vector <int> g[N]; int v[N]; int dp[N][2][2]; void solve(int node, int p, int ap, int app){ vector <int> vl; int sum = 0; if(ap == 1) sum++; for(auto x : g[node]){ if(x == p) continue; solve(x, node, 0, ap); solve(x, node, 1, ap); vl.push_back(-dp[x][0][ap] + dp[x][1][ap]); sum += dp[x][0][ap]; } int valor = v[node] + ap + app; valor %= 2; sort(vl.begin(), vl.end()); if(valor == 0){ dp[node][ap][app] = min(dp[node][ap][app], sum); for(int i = 1;i < vl.size();i += 2){ sum += vl[i] + vl[i-1]; dp[node][ap][app] = min(dp[node][ap][app], sum); } return; } else{ if(vl.size() == 0) return; sum += vl[0]; dp[node][ap][app] = min(dp[node][ap][app], sum); for(int i = 2;i < vl.size();i += 2){ sum += vl[i] + vl[i-1]; dp[node][ap][app] = min(dp[node][ap][app], sum); } return; } } int main(){ cin >> n; for(int i = 1;i < n;i++){ int a, b; cin >> a >> b; g[a].push_back(b); g[b].push_back(a); } for(int i = 1;i <= n;i++) {dp[i][0][0] = dp[i][1][0] = dp[i][0][1] = dp[i][1][1] = inf; cin >> v[i];} solve(1, 1, 0, 0); solve(1, 1, 1, 0); int res = min(dp[1][1][0], dp[1][0][0]); if(res >= N) cout << "impossible\n"; else cout << res << '\n'; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

xanadu.cpp: In function 'void solve(int, int, int, int)':
xanadu.cpp:32:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |         for(int i = 1;i < vl.size();i += 2){
      |                       ~~^~~~~~~~~~~
xanadu.cpp:45:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         for(int i = 2;i < vl.size();i += 2){
      |                       ~~^~~~~~~~~~~
#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...