제출 #1193972

#제출 시각아이디문제언어결과실행 시간메모리
1193972zh_h9월 (APIO24_september)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define pb push_back
#define lint long long int
using namespace std;

vector<int> mx, subtree_mx;
vector<vector<int>> edge;
void dfs(int v, int p) {
    subtree_mx[v] = mx[v];
    for (auto i : edge[v]) {
        if (i == p) continue;
        dfs(i, v);
        subtree_mx[v] = max(subtree_mx[v], subtree_mx[i]);
    }
}

int solve (int n, int m, vector<int> parent, vector<vector<int>> s) {
    edge.resize(n);
    for (int i = 1; i < n; i ++) {
        edge[i].pb(parent[i]);
        edge[parent[i]].pb(i);
    }

    mx.resize(n, -1);
    for (int i = 0; i < m; i ++) {
        for (int j = 0; j < n-1; j ++) {
            mx[s[i][j]] = max(mx[s[i][j]], j);
        }
    }

    subtree_mx.resize(n, 0);
    dfs(0, -1);

    int cur_mx = 0;
    int cur_i = 0;
    int ans = 0;
    while (cur_i < n-1) {
        ans ++;
        cur_mx = cur_i;
        while (cur_i <= cur_mx) {
            cur_mx = max(cur_mx, subtree_mx[s[0][cur_i]]);
            cur_i ++;
        }
    }

    return ans;
}

int main() {
    int n, m;
    cin >> n >> m;
    
    vector<int>p(n);
    for (int i = 0; i < n; i ++) {
        cin >> p[i];
    }

    vector<vector<int>> s;
    for (int i = 0; i < m; i ++) {
        vector<int> s_temp(n-1);
        for (int j = 0; j < n-1; j ++) {
            cin >> s_temp[j];
        }
        s.pb(s_temp);
    }

    cout << solve(n, m, p, s) << endl;
}

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

/usr/bin/ld: /tmp/ccmP1RZw.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccmMydgV.o:september.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status