Submission #301681

#TimeUsernameProblemLanguageResultExecution timeMemory
301681MuhammetaliConnecting Supertrees (IOI20_supertrees)C++14
Compilation error
0 ms0 KiB
#include "supertrees.h" #include <bits/stdc++.h> #define mp make_pair #define f first #define s second #define sz(x) (int)(x).size() #define rsz resize #define ins insert #define ft front() #define bk back() #define pf push_front #define pb push_back using namespace std; typedef long long ll; typedef pair<int,int> pi; typedef pair<ll,ll> pl; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; vi get_comp(vector<vi>& adj,vector<bool>& vis,int k) { assert(vis[k]); vis[k]=1; vi comp(1,k); for (int i=0;i<sz(comp);i++) { assert(vis[comp[i]]); for (int j:adj[comp[i]]) { if (!vis[j]) { vis[comp[i]]=1; comp.pb(i); } } } return comp; } int construct(vector<vi> p) { int n=sz(p); vector<vi> ans(n,vi(n)); vector<vi> adjtree(n),adjcycl(n); for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if (p[i][j]==3)return 0; if (p[i][j]==1)adjtree[i].pb(j); } } vector<vi>trees; vi roots; vector<bool> vis(n); for (int i=0;i<n;i++) { if (!vis[i]) { trees.pb(get_comp(adjtree,vis,i)); roots.pb(trees.bk.bk); } } for (int i=0;i<sz(trees);i++) { for (int j=0;j<sz(trees);j++) { int k=p[roots[i]][roots[j]]; if (k==0 && i==j)return 0; if (k==1 && i!=j)return 0; if (k==2 && i==j)return 0; for (auto k:trees[i]) { for (auto l:trees[j]) { if (p[i][j]!=k)return 0; } } } } for (auto i:trees) { for (auto j:trees[i]) { ans[i][j]=1; } } for (auto i:roots) { for (auto j:roots) { if (p[i][j]==2)adjcycl[i].pb(j); } } vis=vector<bool>(n); for (auto i:roots) { if (!vis[i]) { vi v=get_comp(adjcycl,vis,i); for (auto i:v) { for (int j:v) { if (p[i][j]!=2 && i!=j)return 0; } } if (sz(v)>=2)return 0; for (auto i:v) { for (int j:v) { ans[i][j]=2; } } } } for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { ans[i][j]|=ans[j][i]; ans[j][i]|=ans[i][j]; } } for (int i=0;i<n;i++)ans[i][i]=0; build(ans); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:74:15: warning: unused variable 'l' [-Wunused-variable]
   74 |     for (auto l:trees[j])
      |               ^
supertrees.cpp:83:20: error: no match for 'operator[]' (operand types are 'std::vector<std::vector<int> >' and 'std::vector<int>')
   83 |   for (auto j:trees[i])
      |                    ^
In file included from /usr/include/c++/9/vector:67,
                 from supertrees.h:1,
                 from supertrees.cpp:1:
/usr/include/c++/9/bits/stl_vector.h:1040:7: note: candidate: 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::reference = std::vector<int>&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
 1040 |       operator[](size_type __n) _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_vector.h:1040:28: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'}
 1040 |       operator[](size_type __n) _GLIBCXX_NOEXCEPT
      |                  ~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_vector.h:1058:7: note: candidate: 'std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::const_reference = const std::vector<int>&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
 1058 |       operator[](size_type __n) const _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_vector.h:1058:28: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'}
 1058 |       operator[](size_type __n) const _GLIBCXX_NOEXCEPT
      |                  ~~~~~~~~~~^~~
supertrees.cpp:85:7: error: no match for 'operator[]' (operand types are 'std::vector<std::vector<int> >' and 'std::vector<int>')
   85 |    ans[i][j]=1;
      |       ^
In file included from /usr/include/c++/9/vector:67,
                 from supertrees.h:1,
                 from supertrees.cpp:1:
/usr/include/c++/9/bits/stl_vector.h:1040:7: note: candidate: 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::reference = std::vector<int>&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
 1040 |       operator[](size_type __n) _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_vector.h:1040:28: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'}
 1040 |       operator[](size_type __n) _GLIBCXX_NOEXCEPT
      |                  ~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_vector.h:1058:7: note: candidate: 'std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::const_reference = const std::vector<int>&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
 1058 |       operator[](size_type __n) const _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_vector.h:1058:28: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'}
 1058 |       operator[](size_type __n) const _GLIBCXX_NOEXCEPT
      |                  ~~~~~~~~~~^~~