제출 #1164712

#제출 시각아이디문제언어결과실행 시간메모리
1164712adaawfEaster Eggs (info1cup17_eastereggs)C++20
컴파일 에러
0 ms0 KiB
#include <iostream>
#include <vector>
using namespace std;
vector<int> g[555];
int dd[555], f[555][555], da[555], pp[555][555], db[555];
void dfs(int x, int p, int h, int c) {
    c += dd[x];
    f[h][x] = c;
    pp[h][x] = p;
    for (int w : g[x]) {
        if (w == p) continue;
        dfs(w, x, h, c);
    }
}
int findEgg(int n, vector<pair<int, int>> e) {
    for (int i = 0; i < n - 1; i++) {
        g[e[i].first].push_back(e[i].second);
        g[e[i].second].push_back(e[i].first);
    }
    for (int i = 1; i <= n; i++) dd[i] = 1;
    int h = n;
    while (h != 1) {
        for (int i = 1; i <= n; i++) {
            dfs(i, -1, i, 0);
            da[i] = 0;
        }
        vector<int> v, vv;
        for (int i = 1; i <= n; i++) {
            if (dd[i] == 1) {
                v.push_back(i);
                vv.push_back(i);
                da[i] = 1;
                break;
            }
        }
        int j = 0;
        while (v.size() < (h + 1) / 2) {
            int k = v[j];
            for (int i = 1; i <= n; i++) {
                if (f[k][i] == 2 && da[i] == 0 && dd[i] == 1) {
                    v.push_back(i);
                    int l = i;
                    while (da[l] == 0) {
                        vv.push_back(l);
                        da[l] = 1;
                        l = pp[k][l];
                    }
                }
                if (v.size() == (h + 1) / 2) break;
            }
            j++;
        }
        for (int i = 1; i <= n; i++) db[i] = 0;
        for (int w : v) db[w] = 1;
        if (query(vv)) {
            for (int i = 1; i <= n; i++) {
                dd[i] = db[i];
            }
            h = v.size();
        }
        else {
            for (int i = 1; i <= n; i++) {
                if (dd[i] == 1 && db[i] == 0) {
                    dd[i] = 1;
                }
                else dd[i] = 0;
            }
            h -= v.size();
        }
    }
    for (int i = 1; i <= n; i++) {
        if (dd[i] == 1) return i;
    }
    return -1;
}

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

eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:55:13: error: 'query' was not declared in this scope
   55 |         if (query(vv)) {
      |             ^~~~~