Submission #478347

#TimeUsernameProblemLanguageResultExecution timeMemory
478347ponytailConnecting Supertrees (IOI20_supertrees)C++17
Compilation error
0 ms0 KiB
#include "supertrees.h"
#include <bits/stdc++.h>
#include <vector>
#include <cassert>
#include <cstdio>
#include <cstdlib>
#include <string>

using namespace std;

int construct(std::vector<std::vector<int>> p);
void build(std::vector<std::vector<int>> b);


static int n;
static std::vector<std::vector<int>> p;
static std::vector<std::vector<int>> b;
static bool called = false;

static void check(bool cond, std::string message) {
    if (!cond) {
        printf("%s\n", message.c_str());
        fclose(stdout);
        exit(0);
    }
}

int dsu[1000];

int set_of(int u) {
    if(dsu[u] == u) return u;
    return dsu[u] = set_of(dsu[u]);
}

void union_(int u, int v) {
    dsu[set_of(u)] = set_of(v);
}

int construct(std::vector<std::vector<int>> p) {
	int n = p.size();
	std::vector<std::vector<int>> answer;
	for (int i = 0; i < n; i++) {
		std::vector<int> row;
		row.resize(n);
		answer.push_back(row);
	}
    for(int i=0; i<n; i++) {
        dsu[i] = i;
    }
    
    for(int i=0; i<n; i++) {
        for(int j=0; j<n; j++) {
            if(p[i][j] == 1 && set_of(i) != set_of(j)) {
                union_(i, j);
                answer[i][j] = answer[j][i] = 1;
            }
        }
    }
    for(int i=0; i<n; i++) {
        for(int j=0; j<n; j++) {
            if(p[i][j] == 0 && set_of(i) == set_of(j)) {
                return 0;
            }
        }
    }
	build(answer);
	return 1;
}


void build(std::vector<std::vector<int>> _b) {
    check(!called, "build is called more than once");
    called = true;
    check((int)_b.size() == n, "Invalid number of rows in b");
    for (int i = 0; i < n; i++) {
        check((int)_b[i].size() == n, "Invalid number of columns in b");
    }
    b = _b;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccuDxUyn.o: in function `build(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >)':
grader.cpp:(.text+0x260): multiple definition of `build(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >)'; /tmp/ccLmJjEl.o:supertrees.cpp:(.text+0x2c0): first defined here
collect2: error: ld returned 1 exit status