Submission #696188

# Submission time Handle Problem Language Result Execution time Memory
696188 2023-02-05T18:44:47 Z RaulAndrei01 The Xana coup (BOI21_xanadu) C++17
30 / 100
94 ms 16800 KB
#include <iostream>
#include <bits/stdc++.h>
#include <vector>

using namespace std;
const int nmax = 1e5 + 9;
const int inf = 1e7;
vector<int> adj[nmax];
bool on[nmax];

int dp[2][2][nmax];

void dfs (int nod = 1, int par = 0)
{
    int temp[2][2];

    temp[0][0] = 0;
    temp[1][0] = 0;

    temp[0][1] = inf;
    temp[1][1] = inf;
    
    for (auto to : adj[nod])
    {
        if (to == par) continue;
        
        dfs (to , nod);
        int t[2][2];
        
        t[0][0] = min(temp[0][0] + dp[0][0][to] , temp[0][1] + dp[0][1][to]);
        t[1][0] = min (temp[1][0] + dp[1][0][to] , temp[1][1] + dp[1][1][to]);
        t[0][1] = min(temp[0][1] + dp[0][0][to] , temp[0][0] + dp[0][1][to]);
        t[1][1] = min(temp[1][0] + dp[1][1][to] , temp[1][1] + dp[1][0][to]);
        
        

        for (int i = 0; i < 2; i++)
          for (int j = 0; j < 2; j++)
            temp[i][j] = t[i][j];
    }
    if (on[nod])
    {
        dp[0][0][nod] = temp[0][1];
        dp[0][1][nod] = 1 + temp[1][0];
        dp[1][0][nod] = temp[0][0];
        dp[1][1][nod] = 1 + temp[1][1];
    }
    else {
        dp[0][0][nod] = temp[0][0];
        dp[0][1][nod] = 1 + temp[1][1];
        dp[1][0][nod] = temp[0][1];
        dp[1][1][nod] = 1 + temp[1][0];
    }
 //   cout << nod << '\n';
   // cout << temp[0][0] << ' ' << temp[0][1] << ' ' << temp[1][0] << ' ' << temp[1][1] << '\n';
  //  cout << dp[0][0][nod] << ' ' << dp[0][1][nod] << ' ' << dp[1][0][nod] <<
  //  ' '<< dp[1][1][nod];
  //  cout << '\n';
}

int main ()
{
    int n; cin >> n; 
    for (int i = 1; i < n; i++)
    {
        int x, y; cin >> x >> y;
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
    for (int i = 1; i <= n; i++)
    {
        cin >> on[i];
    }
    
    dfs();
    if (min(dp[0][1][1] , dp[0][0][1]) >= inf) cout << "impossible\n";
    else cout << min(dp[0][1][1] , dp[0][0][1]);
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2664 KB Output is correct
3 Correct 2 ms 2596 KB Output is correct
4 Correct 1 ms 2656 KB Output is correct
5 Correct 2 ms 2660 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2664 KB Output is correct
3 Correct 2 ms 2596 KB Output is correct
4 Correct 1 ms 2656 KB Output is correct
5 Correct 2 ms 2660 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
7 Correct 2 ms 2644 KB Output is correct
8 Correct 2 ms 2644 KB Output is correct
9 Correct 2 ms 2660 KB Output is correct
10 Correct 1 ms 2644 KB Output is correct
11 Correct 2 ms 2644 KB Output is correct
12 Correct 2 ms 2664 KB Output is correct
13 Correct 2 ms 2644 KB Output is correct
14 Correct 2 ms 2644 KB Output is correct
15 Correct 2 ms 2644 KB Output is correct
16 Correct 2 ms 2660 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 93 ms 16800 KB Output is correct
2 Correct 86 ms 16540 KB Output is correct
3 Correct 89 ms 16768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 90 ms 16744 KB Output is correct
2 Correct 89 ms 16520 KB Output is correct
3 Correct 90 ms 16760 KB Output is correct
4 Incorrect 94 ms 6896 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2664 KB Output is correct
3 Correct 2 ms 2596 KB Output is correct
4 Correct 1 ms 2656 KB Output is correct
5 Correct 2 ms 2660 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
7 Correct 2 ms 2644 KB Output is correct
8 Correct 2 ms 2644 KB Output is correct
9 Correct 2 ms 2660 KB Output is correct
10 Correct 1 ms 2644 KB Output is correct
11 Correct 2 ms 2644 KB Output is correct
12 Correct 2 ms 2664 KB Output is correct
13 Correct 2 ms 2644 KB Output is correct
14 Correct 2 ms 2644 KB Output is correct
15 Correct 2 ms 2644 KB Output is correct
16 Correct 2 ms 2660 KB Output is correct
17 Correct 93 ms 16800 KB Output is correct
18 Correct 86 ms 16540 KB Output is correct
19 Correct 89 ms 16768 KB Output is correct
20 Correct 90 ms 16744 KB Output is correct
21 Correct 89 ms 16520 KB Output is correct
22 Correct 90 ms 16760 KB Output is correct
23 Incorrect 94 ms 6896 KB Output isn't correct
24 Halted 0 ms 0 KB -