Submission #1207318

#TimeUsernameProblemLanguageResultExecution timeMemory
1207318agusstGame (IOI14_game)C++20
Compilation error
0 ms0 KiB
#include "game.h"
#include <bits/stdc++.h>

#define dbg(x) cerr << #x << ": " << x << "\n";
using namespace std;
int n;
set<int> x;
vector<int> arr, size, activado;
map<int, int> single, grupal;
void join(int a, int b){
    int u = arr[b];
    for(int i = 0; i < n; i++){
        if(arr[i] == u){
            size[a]++;
            arr[i] = arr[a];
        }
    }

}
void initialize(int N) {
    n = N;
    arr.assign(n, 0);
    iota(arr.begin(), arr.end(), 0);
    activado.assign(n, 0);
    size.assign(n, 1);
}

int hasEdge(int u, int v) {
    if(!activado[u] and !activado[v]){
        activado[u] = 1;
        activado[v] = 1;
        int couenta = 0;
        for(int i = 0; i < n; i++){
            if(!activado[i]){
                couenta++;
            } 
        }
        single[u] = 2 * couenta;
        join(u, v);
        x.insert(u);
        return 1;
    } 
    if(activado[u] and !activado[v]) swap(u, v);
    u = arr[u];
    v = arr[v];
    if(!single.count(u)){
        for(const int &i : x){
            single[u] += size[i];
        }
    }
    single[u]--;
    single[v]--;
    if(!single[u]){
        activado[u] = 1;
        join(v, u);
        return 1;
    }
    return 0;
}

Compilation message (stderr)

game.cpp: In function 'void join(int, int)':
game.cpp:14:13: error: reference to 'size' is ambiguous
   14 |             size[a]++;
      |             ^~~~
In file included from /usr/include/c++/11/string:54,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from game.cpp:2:
/usr/include/c++/11/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/11/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
game.cpp:8:18: note:                 'std::vector<int> size'
    8 | vector<int> arr, size, activado;
      |                  ^~~~
game.cpp: In function 'void initialize(int)':
game.cpp:25:5: error: reference to 'size' is ambiguous
   25 |     size.assign(n, 1);
      |     ^~~~
In file included from /usr/include/c++/11/string:54,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from game.cpp:2:
/usr/include/c++/11/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/11/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
game.cpp:8:18: note:                 'std::vector<int> size'
    8 | vector<int> arr, size, activado;
      |                  ^~~~
game.cpp: In function 'int hasEdge(int, int)':
game.cpp:48:26: error: reference to 'size' is ambiguous
   48 |             single[u] += size[i];
      |                          ^~~~
In file included from /usr/include/c++/11/string:54,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from game.cpp:2:
/usr/include/c++/11/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/11/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
game.cpp:8:18: note:                 'std::vector<int> size'
    8 | vector<int> arr, size, activado;
      |                  ^~~~