제출 #1272467

#제출 시각아이디문제언어결과실행 시간메모리
1272467thuhienneCats or Dogs (JOI18_catdog)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

const int INF = 1e9;

int N;
vector<int> adj[100009];
int type_pet[100009];     // 0 = none, 1 = cat, 2 = dog
int dp[100009][2];

void dfs(int u, int p) {
    dp[u][0] = dp[u][1] = 0;
    for (int v : adj[u]) if (v != p) {
        dfs(v, u);
        dp[u][0] += min(dp[v][0], dp[v][1] + 1);
        dp[u][1] += min(dp[v][1], dp[v][0] + 1);
    }
    if (type_pet[u] == 1) dp[u][1] = INF; // b?t bu?c là cat
    if (type_pet[u] == 2) dp[u][0] = INF; // b?t bu?c là dog
}

int compute_danger() {
    dfs(1, -1);
    return min(dp[1][0], dp[1][1]);
}

// ========== Các hàm theo format yêu c?u ==========

void initialize(int n, int A[], int B[]) {
    N = n;
    for (int i = 1; i <= N; i++) {
        adj[i].clear();
        type_pet[i] = 0;
    }
    for (int i = 0; i < N - 1; i++) {
        int u = A[i], v = B[i];
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
}

int cat(int v) {
    type_pet[v] = 1;
    return compute_danger();
}

int dog(int v) {
    type_pet[v] = 2;
    return compute_danger();
}

int neighbor(int v) {
    type_pet[v] = 0;
    return compute_danger();
}

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

/usr/bin/ld: /tmp/ccZO74oq.o: in function `main':
grader.cpp:(.text.startup+0x1d4): undefined reference to `initialize(int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status