# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1024151 | XJP12 | Connecting Supertrees (IOI20_supertrees) | C++14 | Compilation error | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "supertrees.h"
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
int n;
struct UF{
vi e;
vi con;
UF(int n){ e.assign(n,-1); con.assign(n,0);}
int find(int x){ return (e[x] < 0 ? x : find(e[x])); }
void _union(int a, int b){
int x = find(a);
int y = find(b);
if(x == y) return;
if(e[x] > e[y]) swap(x,y);
e[x] += e[y];
e[y] = x;
}
};
int construct(vvi p){
n = p.size();
int ban=0;
UF fu(n);
vvi ans(n, vi(n,0));
vvi coneect(n, set<int>());
vvi conect(n, vi());
for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
if(i==j) continue;
if(p[i][j]==1 && ban==0){
ban=1;
}
if(p[i][j]==2 && ban==0){
ban=2;
}
if(p[i][j]!=0){
fu._union(i, j);
}
}
}
for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
if(p[i][j]==0){
if(fu.find(i)==fu.find(j)){
return 0;
}
}else{
int t = fu.find(i);
int size=(int)coneect[t].size();
coneect[t].insert(i);
if((int)coneect[t].size() > size) {conect[t].push_back(i); size++;}
coneect[t].insert(j);
if((int)coneect[t].size() > size) {conect[t].push_back(j); size++;}
}
}
}
for(int i=0; i<n; i++){
if(ban==2 && (int)conect[i].size()==2){
return 0;
}
for(int j=0; j<(int)conect[i].size()-1; j++){
ans[conect[i][j+1]][conect[i][j]]=1;
ans[conect[i][j]][conect[i][j+1]]=1;
}
if(ban==2){
ans[conect[i][(int)conect.size()-1]][conect[i][0]]=1;
ans[conect[i][0]][conect[i][(int)conect.size()-1]]=1;
}
}
for(int i=0; i<n; i++){
ans[i][i]=0;
}
build(ans);
return 1;
}
Compilation message (stderr)
supertrees.cpp: In function 'int construct(vvi)': supertrees.cpp:29:27: error: no matching function for call to 'std::vector<std::vector<int> >::vector(int&, std::set<int>)' 29 | vvi coneect(n, set<int>()); | ^ In file included from /usr/include/c++/10/vector:67, from /usr/include/c++/10/queue:61, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from supertrees.cpp:1: /usr/include/c++/10/bits/stl_vector.h:653:2: note: candidate: 'template<class _InputIterator, class> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >]' 653 | vector(_InputIterator __first, _InputIterator __last, | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:653:2: note: template argument deduction/substitution failed: supertrees.cpp:29:27: note: deduced conflicting types for parameter '_InputIterator' ('int' and 'std::set<int>') 29 | vvi coneect(n, set<int>()); | ^ In file included from /usr/include/c++/10/vector:67, from /usr/include/c++/10/queue:61, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from supertrees.cpp:1: /usr/include/c++/10/bits/stl_vector.h:625:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]' 625 | vector(initializer_list<value_type> __l, | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:625:43: note: no known conversion for argument 1 from 'int' to 'std::initializer_list<std::vector<int> >' 625 | vector(initializer_list<value_type> __l, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ /usr/include/c++/10/bits/stl_vector.h:607:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&, const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]' 607 | vector(vector&& __rv, const allocator_type& __m) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:607:23: note: no known conversion for argument 1 from 'int' to 'std::vector<std::vector<int> >&&' 607 | vector(vector&& __rv, const allocator_type& __m) | ~~~~~~~~~^~~~ /usr/include/c++/10/bits/stl_vector.h:589:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&, const allocator_type&, std::false_type) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >; std::false_type = std::integral_constant<bool, false>]' 589 | vector(vector&& __rv, const allocator_type& __m, false_type) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:589:7: note: candidate expects 3 arguments, 2 provided /usr/include/c++/10/bits/stl_vector.h:585:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&, const allocator_type&, std::true_type) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >; std::true_type = std::integral_constant<bool, true>]' 585 | vector(vector&& __rv, const allocator_type& __m, true_type) noexcept | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:585:7: note: candidate expects 3 arguments, 2 provided /usr/include/c++/10/bits/stl_vector.h:575:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&, const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]' 575 | vector(const vector& __x, const allocator_type& __a) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:575:28: note: no known conversion for argument 1 from 'int' to 'const std::vector<std::vector<int> >&' 575 | vector(const vector& __x, const allocator_type& __a) | ~~~~~~~~~~~~~~^~~ /usr/include/c++/10/bits/stl_vector.h:572:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >]' 572 | vector(vector&&) noexcept = default; | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:572:7: note: candidate expects 1 argument, 2 provided /usr/include/c++/10/bits/stl_vector.h:553:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >]' 553 | vector(const vector& __x) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:553:7: note: candidate expects 1 argument, 2 provided /usr/include/c++/10/bits/stl_vector.h:522:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::vector<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]' 522 | vector(size_type __n, const value_type& __value, | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:522:47: note: no known conversion for argument 2 from 'std::set<int>' to 'const value_type&' {aka 'const std::vector<int>&'} 522 | vector(size_type __n, const value_type& __value, | ~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/include/c++/10/bits/stl_vector.h:510:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]' 510 | vector(size_type __n, const allocator_type& __a = allocator_type()) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:510:51: note: no known conversion for argument 2 from 'std::set<int>' to 'const allocator_type&' {aka 'const std::allocator<std::vector<int> >&'} 510 | vector(size_type __n, const allocator_type& __a = allocator_type()) | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/10/bits/stl_vector.h:497:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]' 497 | vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:497:7: note: candidate expects 1 argument, 2 provided /usr/include/c++/10/bits/stl_vector.h:487:7: note: candidate: 'std::vector<_Tp, _Alloc>::vector() [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >]' 487 | vector() = default; | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:487:7: note: candidate expects 0 arguments, 2 provided supertrees.cpp:54:24: error: no matching function for call to 'std::vector<int>::insert(int&)' 54 | coneect[t].insert(i); | ^ In file included from /usr/include/c++/10/vector:72, from /usr/include/c++/10/queue:61, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from supertrees.cpp:1: /usr/include/c++/10/bits/vector.tcc:130:5: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator; std::vector<_Tp, _Alloc>::value_type = int]' 130 | vector<_Tp, _Alloc>:: | ^~~~~~~~~~~~~~~~~~~ /usr/include/c++/10/bits/vector.tcc:130:5: note: candidate expects 2 arguments, 1 provided In file included from /usr/include/c++/10/vector:67, from /usr/include/c++/10/queue:61, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from supertrees.cpp:1: /usr/include/c++/10/bits/stl_vector.h:1293:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator; std::vector<_Tp, _Alloc>::value_type = int]' 1293 | insert(const_iterator __position, value_type&& __x) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1293:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/10/bits/stl_vector.h:1310:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::initializer_list<_Tp>) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator]' 1310 | insert(const_iterator __position, initializer_list<value_type> __l) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1310:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/10/bits/stl_vector.h:1335:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::vector<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int]' 1335 | insert(const_iterator __position, size_type __n, const value_type& __x) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1335:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/10/bits/stl_vector.h:1379:2: note: candidate: 'template<class _InputIterator, class> std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, _InputIterator, _InputIterator) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _Tp = int; _Alloc = std::allocator<int>]' 1379 | insert(const_iterator __position, _InputIterator __first, | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1379:2: note: template argument deduction/substitution failed: supertrees.cpp:54:24: note: candidate expects 3 arguments, 1 provided 54 | coneect[t].insert(i); | ^ supertrees.cpp:56:24: error: no matching function for call to 'std::vector<int>::insert(int&)' 56 | coneect[t].insert(j); | ^ In file included from /usr/include/c++/10/vector:72, from /usr/include/c++/10/queue:61, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from supertrees.cpp:1: /usr/include/c++/10/bits/vector.tcc:130:5: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator; std::vector<_Tp, _Alloc>::value_type = int]' 130 | vector<_Tp, _Alloc>:: | ^~~~~~~~~~~~~~~~~~~ /usr/include/c++/10/bits/vector.tcc:130:5: note: candidate expects 2 arguments, 1 provided In file included from /usr/include/c++/10/vector:67, from /usr/include/c++/10/queue:61, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from supertrees.cpp:1: /usr/include/c++/10/bits/stl_vector.h:1293:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator; std::vector<_Tp, _Alloc>::value_type = int]' 1293 | insert(const_iterator __position, value_type&& __x) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1293:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/10/bits/stl_vector.h:1310:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::initializer_list<_Tp>) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator]' 1310 | insert(const_iterator __position, initializer_list<value_type> __l) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1310:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/10/bits/stl_vector.h:1335:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::vector<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::iterator = std::vector<int>::iterator; std::vector<_Tp, _Alloc>::const_iterator = std::vector<int>::const_iterator; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int]' 1335 | insert(const_iterator __position, size_type __n, const value_type& __x) | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1335:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/10/bits/stl_vector.h:1379:2: note: candidate: 'template<class _InputIterator, class> std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, _InputIterator, _InputIterator) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _Tp = int; _Alloc = std::allocator<int>]' 1379 | insert(const_iterator __position, _InputIterator __first, | ^~~~~~ /usr/include/c++/10/bits/stl_vector.h:1379:2: note: template argument deduction/substitution failed: supertrees.cpp:56:24: note: candidate expects 3 arguments, 1 provided 56 | coneect[t].insert(j); | ^