Submission #789515

# Submission time Handle Problem Language Result Execution time Memory
789515 2023-07-21T12:59:43 Z anton Cats or Dogs (JOI18_catdog) C++17
38 / 100
3000 ms 8124 KB
#include "catdog.h"
#include<bits/stdc++.h>

using namespace std;
#define pii pair<int, int>

const int N_MAX = 1e5;
int n, t[N_MAX];
bool vis[N_MAX];
vector<vector<int>> adj;
vector<vector<int>> ch;


void dfs(int id){
  //cout<<"dfs "<<id<<endl;
  vis[id] = true;

  for(auto e: adj[id]){
    if(!vis[e]){
      ch[id].push_back(e);
      dfs(e);
    }
  }
}

void initialize(int N, std::vector<int> A, std::vector<int> B) {
  n = N;
  adj.resize(n);
  ch.resize(n);
  fill(t, t+N_MAX, -1);

  for(int i = 0; i<n-1; i++){
    int a = A[i]-1;
    int b=  B[i]-1;

    adj[a].push_back(b);
    adj[b].push_back(a);
  }

  dfs(0);
}

pii dp(int i){
  int s= 0, oc[2] = {0, 0};

  for(auto e: ch[i]){
    pii r = dp(e);
    s+=r.first;
    if(r.second!=-1){
      oc[r.second]++;
    }
  }

  pii res;
  if(t[i] == -1){
    res = pii(s +min(oc[0], oc[1]), -1);
    if(oc[0]<oc[1]){
      res.second = 1;
    }
    else if(oc[0]>oc[1]){
      res.second = 0;
    }
    else{
      res.second = -1;
    }
  }
  else{
    res= pii(s+ oc[t[i]^1], t[i]);
  }

  //cout<<"dp "<<i<<" "<<res.first<<" "<<res.second<<endl;
  return res;
}


int cat(int v) {
  t[v-1] = 0;
  return dp(0).first;
}

int dog(int v) {
  t[v-1]=1;
  return dp(0).first;
}

int neighbor(int v) {
  t[v-1] = -1;
  return dp(0).first;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 596 KB Output is correct
2 Correct 1 ms 596 KB Output is correct
3 Correct 1 ms 596 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Correct 1 ms 688 KB Output is correct
9 Correct 1 ms 596 KB Output is correct
10 Correct 1 ms 692 KB Output is correct
11 Correct 1 ms 692 KB Output is correct
12 Correct 1 ms 596 KB Output is correct
13 Correct 1 ms 596 KB Output is correct
14 Correct 1 ms 596 KB Output is correct
15 Correct 1 ms 596 KB Output is correct
16 Correct 1 ms 692 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 596 KB Output is correct
2 Correct 1 ms 596 KB Output is correct
3 Correct 1 ms 596 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Correct 1 ms 688 KB Output is correct
9 Correct 1 ms 596 KB Output is correct
10 Correct 1 ms 692 KB Output is correct
11 Correct 1 ms 692 KB Output is correct
12 Correct 1 ms 596 KB Output is correct
13 Correct 1 ms 596 KB Output is correct
14 Correct 1 ms 596 KB Output is correct
15 Correct 1 ms 596 KB Output is correct
16 Correct 1 ms 692 KB Output is correct
17 Correct 4 ms 724 KB Output is correct
18 Correct 5 ms 724 KB Output is correct
19 Correct 3 ms 724 KB Output is correct
20 Correct 1 ms 692 KB Output is correct
21 Correct 2 ms 724 KB Output is correct
22 Correct 2 ms 724 KB Output is correct
23 Correct 6 ms 724 KB Output is correct
24 Correct 5 ms 700 KB Output is correct
25 Correct 3 ms 724 KB Output is correct
26 Correct 2 ms 724 KB Output is correct
27 Correct 1 ms 696 KB Output is correct
28 Correct 2 ms 724 KB Output is correct
29 Correct 9 ms 852 KB Output is correct
30 Correct 1 ms 724 KB Output is correct
31 Correct 1 ms 692 KB Output is correct
32 Correct 2 ms 724 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 596 KB Output is correct
2 Correct 1 ms 596 KB Output is correct
3 Correct 1 ms 596 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Correct 1 ms 688 KB Output is correct
9 Correct 1 ms 596 KB Output is correct
10 Correct 1 ms 692 KB Output is correct
11 Correct 1 ms 692 KB Output is correct
12 Correct 1 ms 596 KB Output is correct
13 Correct 1 ms 596 KB Output is correct
14 Correct 1 ms 596 KB Output is correct
15 Correct 1 ms 596 KB Output is correct
16 Correct 1 ms 692 KB Output is correct
17 Correct 4 ms 724 KB Output is correct
18 Correct 5 ms 724 KB Output is correct
19 Correct 3 ms 724 KB Output is correct
20 Correct 1 ms 692 KB Output is correct
21 Correct 2 ms 724 KB Output is correct
22 Correct 2 ms 724 KB Output is correct
23 Correct 6 ms 724 KB Output is correct
24 Correct 5 ms 700 KB Output is correct
25 Correct 3 ms 724 KB Output is correct
26 Correct 2 ms 724 KB Output is correct
27 Correct 1 ms 696 KB Output is correct
28 Correct 2 ms 724 KB Output is correct
29 Correct 9 ms 852 KB Output is correct
30 Correct 1 ms 724 KB Output is correct
31 Correct 1 ms 692 KB Output is correct
32 Correct 2 ms 724 KB Output is correct
33 Execution timed out 3077 ms 8124 KB Time limit exceeded
34 Halted 0 ms 0 KB -