제출 #1325690

#제출 시각아이디문제언어결과실행 시간메모리
1325690adiyerTwo Transportations (JOI19_transportations)C++20
컴파일 에러
0 ms0 KiB
#include "Baijan.h"
#include <bits/stdc++.h>

using namespace std;

namespace {

    const int BLOCK = 0;
    const int maxn = 2000;
    const int inf = 1123123123;

    int n, m, reb;
    int d[maxn];

    vector < pair < int, int > > g[maxn];

    vector < bool > rec2;

    void dijkstra(int s){
        set < pair < int, int > > q;
        fill(d, d + maxn, inf);
        d[s] = 0, q.insert({d[s], s});
        while(!q.empty()){
            int v = (q.begin() -> second);
            q.erase(q.begin());
            for(auto [u, w] : g[v])
                if(d[v] + w < d[u])
                    q.erase({d[u], u}),
                    d[u] = d[v] + w,
                    q.insert({d[u], u});
        }
    }
}


void InitB(int N, int B, std::vector<int> S, std::vector<int> T, std::vector<int> D) {
    n = N, reb = B, m = n - reb - 1;
    int j = 0;
    for(int i = 0; i < B; i++)
        g[S[i]].push_back({T[i], D[i]}),
        g[T[i]].push_back({S[i], D[i]});
    if(m >= BLOCK){
        for(int i = 0; i < reb; i++){
            for(int bit = 10; bit >= 0; bit--) SendB((S[i] >> bit & 1));
            for(int bit = 10; bit >= 0; bit--) SendB((T[i] >> bit & 1));
            for(int bit = 8; bit >= 0; bit--) SendB((D[i] >> bit & 1));
        }
    }
}

void ReceiveB(bool y) {
    rec2.push_back(y);
    if(m < BLOCK && rec2.size() == 31 * m){
        int j = 0;
        for(int i = 0; i < m; i++){
            int u = 0, v = 0, c = 0;
            for(int bit = 10; bit >= 0; bit--) u |= (rec2[j++] << bit);
            for(int bit = 10; bit >= 0; bit--) v |= (rec2[j++] << bit);
            for(int bit = 8; bit >= 0; bit--) c |= (rec2[j++] << bit);
            g[u].push_back({v, c});
            g[v].push_back({u, c});
        }
        dijkstra(0);
        for(int i = 0; i < n; i++)
            for(int bit = 19; bit >= 0; bit--)
                SendB((d[i] >> bit & 1));
    }
}
#include "Baijan.h"
#include <bits/stdc++.h>

using namespace std;

namespace {

    const int maxn = 2000;
    const int inf = 1123123123;

    int n, m, reb;
    int d[maxn];

    vector < pair < int, int > > g[maxn];

    vector < bool > rec2;

    void dijkstra(int s){
        set < pair < int, int > > q;
        fill(d, d + maxn, inf);
        d[s] = 0, q.insert({d[s], s});
        while(!q.empty()){
            int v = (q.begin() -> second);
            q.erase(q.begin());
            for(auto [u, w] : g[v])
                if(d[v] + w < d[u])
                    q.erase({d[u], u}),
                    d[u] = d[v] + w,
                    q.insert({d[u], u});
        }
    }
}


void InitB(int N, int B, std::vector<int> S, std::vector<int> T, std::vector<int> D) {
    n = N, reb = B, m = n - reb - 1;
    int j = 0;
    for(int i = 0; i < B; i++)
        g[S[i]].push_back({T[i], D[i]}),
        g[T[i]].push_back({S[i], D[i]});
    if(m >= 500){
        for(int i = 0; i < reb; i++){
            for(int bit = 10; bit >= 0; bit--) SendB((S[i] >> bit & 1));
            for(int bit = 10; bit >= 0; bit--) SendB((T[i] >> bit & 1));
            for(int bit = 8; bit >= 0; bit--) SendB((D[i] >> bit & 1));
        }
    }
}

void ReceiveB(bool y) {
    rec2.push_back(y);
    if(m < 500 && rec2.size() == 31 * m){
        int j = 0;
        for(int i = 0; i < m; i++){
            int u = 0, v = 0, c = 0;
            for(int bit = 10; bit >= 0; bit--) u |= (rec2[j++] << bit);
            for(int bit = 10; bit >= 0; bit--) v |= (rec2[j++] << bit);
            for(int bit = 8; bit >= 0; bit--) c |= (rec2[j++] << bit);
            g[u].push_back({v, c});
            g[v].push_back({u, c});
        }
        dijkstra(0);
        for(int i = 0; i < n; i++)
            for(int bit = 19; bit >= 0; bit--)
                SendB((d[i] >> bit & 1));
    }
}

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

# 1번째 컴파일 단계

/usr/bin/ld: /tmp/ccgiLsfX.o: in function `InitB(int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)':
Azer.cpp:(.text+0x540): undefined reference to `SendB(bool)'
/usr/bin/ld: Azer.cpp:(.text+0x561): undefined reference to `SendB(bool)'
/usr/bin/ld: Azer.cpp:(.text+0x589): undefined reference to `SendB(bool)'
/usr/bin/ld: /tmp/ccgiLsfX.o: in function `ReceiveB(bool)':
Azer.cpp:(.text+0xab4): undefined reference to `SendB(bool)'
/usr/bin/ld: /tmp/cc7t8oAz.o: in function `main':
grader_azer.cpp:(.text.startup+0x172): undefined reference to `InitA(int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
/usr/bin/ld: grader_azer.cpp:(.text.startup+0x1e8): undefined reference to `ReceiveA(bool)'
/usr/bin/ld: grader_azer.cpp:(.text.startup+0x285): undefined reference to `Answer()'
collect2: error: ld returned 1 exit status