제출 #1240379

#제출 시각아이디문제언어결과실행 시간메모리
1240379vivkostovSimurgh (IOI17_simurgh)C++20
컴파일 에러
0 ms0 KiB
#pragma once #include "grader.cpp" #include "simurgh.h" #include <bits/stdc++.h> using namespace std; struct cell { int to,ind; }; vector<int>otg,h,f,rv,ru; vector<cell>v[505]; int n,m,used[505][505],lead[505],sz[505],mas[505]; void force(int el) { int br,ind; for(int i=0;i<n;i++) { br=0; for(int j=0;j<v[i].size();j++) { if(used[i][v[i][j].to])continue; br++; ind=j; } if(br==1) { used[i][v[i][ind].to]=el; used[v[i][ind].to][i]=el; otg.push_back(v[i][ind].ind); f.push_back(v[i][ind].ind); } } } int get_lead(int beg) { if(lead[beg]==beg)return beg; return lead[beg]=get_lead(lead[beg]); } void prec() { for(int i=0;i<n;i++) { lead[i]=i; sz[i]=1; } } void add(int a,int b,int ind) { a=get_lead(a); b=get_lead(b); if(a==b)return; h.push_back(ind); if(sz[a]<sz[b])swap(a,b); lead[b]=a; sz[a]+=sz[b]; } void get_tree(int beg) { prec(); h.clear(); for(int i=0;i<f.size();i++) { add(rv[f[i]],ru[f[i]],f[i]); } for(int i=0;i<n;i++) { if(i==beg)continue; for(int j=0;j<v[i].size();j++) { if(used[i][v[i][j].to]==2||v[i][j].to==beg)continue; add(i,v[i][j].to,v[i][j].ind); } } } void find_ver(int beg) { int ma=0,w; get_tree(beg); for(int i=0;i<v[beg].size();i++) { w=v[beg][i].to; if(used[beg][w]==1) { h.push_back(v[beg][i].ind); ma=count_common_roads(h); h.pop_back(); break; } } int c; memset(mas,0,sizeof(mas)); for(int i=0;i<v[beg].size();i++) { w=v[beg][i].to; if(!used[beg][w]) { h.push_back(v[beg][i].ind); c=count_common_roads(h); ma=max(ma,c); mas[i]=c; h.pop_back(); } } for(int i=0;i<v[beg].size();i++) { w=v[beg][i].to; if(mas[i]==0)continue; if(mas[i]!=ma)used[w][beg]=3; if(mas[i]==ma) { used[w][beg]=1; otg.push_back(v[beg][i].ind); } } } vector<int> find_roads(int N, vector<int> U, vector<int> V) { n=N; m=u.size(); for(int i=0;i<m;i++) { cell h; h.ind=i; h.to=V[i]; v[U[i]].push_back(h); h.to=U[i]; v[V[i]].push_back(h); } rv=V; ru=U; for(int i=1;i<=n;i++) { force(2); } /*for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<used[i][j]<<" "; } cout<<endl; }*/ for(int i=0;i<n;i++) { find_ver(i); } return otg; }

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

simurgh.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
simurgh.cpp:11:13: error: conflicting declaration 'std::vector<cell> v [505]'
   11 | vector<cell>v[505];
      |             ^
In file included from simurgh.cpp:2:
grader.cpp:22:23: note: previous declaration as 'std::vector<int> v'
   22 | static vector<int> u, v;
      |                       ^
simurgh.cpp:12:5: error: redefinition of 'int n'
   12 | int n,m,used[505][505],lead[505],sz[505],mas[505];
      |     ^
In file included from simurgh.cpp:2:
grader.cpp:21:12: note: 'int n' previously declared here
   21 | static int n, m, q = 0;
      |            ^
simurgh.cpp:12:7: error: redefinition of 'int m'
   12 | int n,m,used[505][505],lead[505],sz[505],mas[505];
      |       ^
In file included from simurgh.cpp:2:
grader.cpp:21:15: note: 'int m' previously declared here
   21 | static int n, m, q = 0;
      |               ^
simurgh.cpp: In function 'void force(int)':
simurgh.cpp:19:28: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)i))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   19 |         for(int j=0;j<v[i].size();j++)
      |                            ^~~~
simurgh.cpp:21:28: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   21 |             if(used[i][v[i][j].to])continue;
      |                            ^
simurgh.cpp:27:25: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   27 |             used[i][v[i][ind].to]=el;
      |                         ^
simurgh.cpp:28:22: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   28 |             used[v[i][ind].to][i]=el;
      |                      ^
simurgh.cpp:29:31: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   29 |             otg.push_back(v[i][ind].ind);
      |                               ^
simurgh.cpp:30:29: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   30 |             f.push_back(v[i][ind].ind);
      |                             ^
simurgh.cpp: In function 'void get_tree(int)':
simurgh.cpp:68:28: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)i))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   68 |         for(int j=0;j<v[i].size();j++)
      |                            ^~~~
simurgh.cpp:70:28: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   70 |             if(used[i][v[i][j].to]==2||v[i][j].to==beg)continue;
      |                            ^
simurgh.cpp:70:44: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   70 |             if(used[i][v[i][j].to]==2||v[i][j].to==beg)continue;
      |                                            ^
simurgh.cpp:71:23: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   71 |             add(i,v[i][j].to,v[i][j].ind);
      |                       ^
simurgh.cpp:71:34: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   71 |             add(i,v[i][j].to,v[i][j].ind);
      |                                  ^
simurgh.cpp: In function 'void find_ver(int)':
simurgh.cpp:79:26: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)beg))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   79 |     for(int i=0;i<v[beg].size();i++)
      |                          ^~~~
simurgh.cpp:81:17: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   81 |         w=v[beg][i].to;
      |                 ^
simurgh.cpp:84:31: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   84 |             h.push_back(v[beg][i].ind);
      |                               ^
simurgh.cpp:92:26: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)beg))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   92 |     for(int i=0;i<v[beg].size();i++)
      |                          ^~~~
simurgh.cpp:94:17: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   94 |         w=v[beg][i].to;
      |                 ^
simurgh.cpp:97:31: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   97 |             h.push_back(v[beg][i].ind);
      |                               ^
simurgh.cpp:104:26: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)beg))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
  104 |     for(int i=0;i<v[beg].size();i++)
      |                          ^~~~
simurgh.cpp:106:17: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
  106 |         w=v[beg][i].to;
      |                 ^
simurgh.cpp:112:33: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
  112 |             otg.push_back(v[beg][i].ind);
      |                                 ^
simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:125:17: error: request for member 'push_back' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)U.std::vector<int>::operator[](((std::vector<int>::size_type)i))))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
  125 |         v[U[i]].push_back(h);
      |                 ^~~~~~~~~
simurgh.cpp:127:17: error: request for member 'push_back' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)V.std::vector<int>::operator[](((std::vector<int>::size_type)i))))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
  127 |         v[V[i]].push_back(h);
      |                 ^~~~~~~~~