Submission #1257814

#TimeUsernameProblemLanguageResultExecution timeMemory
1257814Rainmaker2627세계 지도 (IOI25_worldmap)C++20
Compilation error
0 ms0 KiB
#include "worldmap.h"
using namespace std;
#include<cassert>

int n, t=0, d=0;
std::vector<int> vis;
std::vector<std::vector<int>> ans, adj;
void dfs(int v) {
    vis[v] = ++t;
    int diag = d + 1;
    d += 3;
    fill_diag(diag - 1, v);
    fill_diag(diag, v);
    fill_diag(diag + 1, v);
    int x = std::max(0, diag - 2 * n + 1);
    for (int w : adj.at(v)) {
        if (!vis.at(w)) {
            dfs(w);
            fill_diag(d, v);
            ++d;
        } else if (vis.at(w) < vis.at(v)) {
            assert(0 <= diag - x && diag - x < 2 * n);
            ans.at(x).at(diag - x) = w;
            ++x;
        }
    }
}

void fill_diag(int d, int v) {
    for (int x = 0; x < 2*n; x++) {
        int y=d-x;
        if (0<=y && y<2*n) ans[x][y]=v;
    }
}


std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A,
                                        std::vector<int> B) {

    n=N;
    ans.assign(2 * N, std::vector<int>(2 * N, 0));
    adj.assign(N+1, vector<int>());
    vis.assign(N + 1, 0);
    for (int i = 0; i < M; ++i) {
        adj[A[i]].pb(B[i]);
        adj[B[i]].pb(A[i]);
    }

    dfs(1);
    while (d < 4 * N) {
        fill_diag(d, 1);
        ++d;
    }
    assert(t == N);
    return ans;
}

Compilation message (stderr)

worldmap.cpp: In function 'void dfs(int)':
worldmap.cpp:12:5: error: 'fill_diag' was not declared in this scope
   12 |     fill_diag(diag - 1, v);
      |     ^~~~~~~~~
worldmap.cpp: In function 'std::vector<std::vector<int> > create_map(int, int, std::vector<int>, std::vector<int>)':
worldmap.cpp:45:19: error: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'class std::vector<int>'} has no member named 'pb'
   45 |         adj[A[i]].pb(B[i]);
      |                   ^~
worldmap.cpp:46:19: error: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'class std::vector<int>'} has no member named 'pb'
   46 |         adj[B[i]].pb(A[i]);
      |                   ^~