제출 #1150842

#제출 시각아이디문제언어결과실행 시간메모리
1150842enzy낙하산 고리들 (IOI12_rings)C++20
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; const int maxn=1e6+10; int n, qm3, qm4, pai[maxn], ciclo, qtd4, caras[maxn], grau[maxn], tam, tira[maxn]; vector<int>v[maxn], usar[maxn]; bool ja=false; void merge(int a, int b){ pai[b]=a; } int find(int a){ if(pai[a]==a) return a; return pai[a]=find(pai[a]); } void Init(int N_){ resp = n = N_; for(int i=0;i<n;i++) pai[i]=i; } void lenhadora(){ for(int i=1;i<=n;i++){ usar[i]=v[i]; grau[i]=v[i].size(); } queue<int>q; for(int i=1;i<=n;i++) if(grau[i]==1) q.push(i); while(!q.empty()){ int u=q.front(); q.pop(); for(int viz : v){ if(grau[viz]){ grau[viz]--; if(grau[viz]<=1) q.push(viz); } } } for(int i=1;i<=n;i++){ if(grau[i]){ caras[i]++; tam++; } } } void Link(int a, int b){ v[a].push_back(b); v[b].push_back(a); int na=find(a), nb=find(b); if(na==nb){ // irão formar um ciclo if(ciclo){ if(caras[a]==0||caras[b]==0) ciclo++; }else{ lenhadora(); ciclo++; } } if(na!=nb) merge(na,nb); // se não forem conexos, ligar eles if(v[a].size()==4) qtd4++; if(v[b].size()==4) qtd4++; if(v[a].size()>=4) qm4=a; if(v[b].size()>=4) qm4=b; // agr sabemos q tem apenas caras com grau 3 ou menos e há no máximo um ciclo if(v[a].size()==3){ qtd3++; tira[a]++; // aumentando a qtd for(int i : v[a]) tira[i]++; // aumentando a qtd qm3=a; } if(v[b].size()==3){ qtd3++; tira[b]++; // aumentando a qtd for(int i : v[b]) tira[i]++; // aumentando a qtd qm3=b; } } int CountCritical(){ if(qtd4>=2||ciclo>=2) return 0; if(qtd4){ if(tira[qm4]==qtd3&&caras[qm4]==ciclo) return 1; else return 0; } if(qtd3){ int resp=0; for(int viz : qm3) if(tira[viz]==qtd3&&caras[viz]==ciclo) resp++; if(tira[qm3]==qtd3&&caras[qm3]==ciclo) resp++; return resp; } if(ciclo) return tam; else return n; }

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

rings.cpp: In function 'void Init(int)':
rings.cpp:17:5: error: 'resp' was not declared in this scope
   17 |     resp = n = N_;
      |     ^~~~
rings.cpp: In function 'void lenhadora()':
rings.cpp:30:23: error: cannot convert 'std::vector<int>' to 'int' in initialization
   30 |         for(int viz : v){
      |                       ^
rings.cpp: In function 'void Link(int, int)':
rings.cpp:64:9: error: 'qtd3' was not declared in this scope; did you mean 'qtd4'?
   64 |         qtd3++; tira[a]++; // aumentando a qtd
      |         ^~~~
      |         qtd4
rings.cpp:69:9: error: 'qtd3' was not declared in this scope; did you mean 'qtd4'?
   69 |         qtd3++; tira[b]++; // aumentando a qtd
      |         ^~~~
      |         qtd4
rings.cpp: In function 'int CountCritical()':
rings.cpp:78:23: error: 'qtd3' was not declared in this scope; did you mean 'qtd4'?
   78 |         if(tira[qm4]==qtd3&&caras[qm4]==ciclo) return 1;
      |                       ^~~~
      |                       qtd4
rings.cpp:81:8: error: 'qtd3' was not declared in this scope; did you mean 'qtd4'?
   81 |     if(qtd3){
      |        ^~~~
      |        qtd4
rings.cpp:83:23: error: 'begin' was not declared in this scope
   83 |         for(int viz : qm3) if(tira[viz]==qtd3&&caras[viz]==ciclo) resp++;
      |                       ^~~
rings.cpp:83:23: note: suggested alternatives:
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from rings.cpp:1:
/usr/include/c++/11/valarray:1228:5: note:   'std::begin'
 1228 |     begin(const valarray<_Tp>& __va) noexcept
      |     ^~~~~
In file included from /usr/include/c++/11/string_view:48,
                 from /usr/include/c++/11/bits/basic_string.h:48,
                 from /usr/include/c++/11/string:55,
                 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 rings.cpp:1:
/usr/include/c++/11/bits/ranges_base.h:561:44: note:   'std::ranges::__cust::begin'
  561 |     inline constexpr __cust_access::_Begin begin{};
      |                                            ^~~~~
In file included from /usr/include/c++/11/filesystem:46,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:129,
                 from rings.cpp:1:
/usr/include/c++/11/bits/fs_dir.h:549:3: note:   'std::filesystem::__cxx11::begin'
  549 |   begin(recursive_directory_iterator __iter) noexcept
      |   ^~~~~
In file included from /usr/include/c++/11/bits/stl_iterator_base_types.h:71,
                 from /usr/include/c++/11/bits/stl_algobase.h:65,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from rings.cpp:1:
/usr/include/c++/11/bits/iterator_concepts.h:949:10: note:   'std::ranges::__cust_access::begin'
  949 |     void begin(const auto&) = delete;
      |          ^~~~~
rings.cpp:83:23: error: 'end' was not declared in this scope
   83 |         for(int viz : qm3) if(tira[viz]==qtd3&&caras[viz]==ciclo) resp++;
      |                       ^~~
rings.cpp:83:23: note: suggested alternatives:
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from rings.cpp:1:
/usr/include/c++/11/valarray:1255:5: note:   'std::end'
 1255 |     end(const valarray<_Tp>& __va) noexcept
      |     ^~~
In file included from /usr/include/c++/11/string_view:48,
                 from /usr/include/c++/11/bits/basic_string.h:48,
                 from /usr/include/c++/11/string:55,
                 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 rings.cpp:1:
/usr/include/c++/11/bits/ranges_base.h:562:42: note:   'std::ranges::__cust::end'
  562 |     inline constexpr __cust_access::_End end{};
      |                                          ^~~
In file included from /usr/include/c++/11/filesystem:46,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:129,
                 from rings.cpp:1:
/usr/include/c++/11/bits/fs_dir.h:554:3: note:   'std::filesystem::__cxx11::end'
  554 |   end(recursive_directory_iterator) noexcept
      |   ^~~
In file included from /usr/include/c++/11/string_view:48,
                 from /usr/include/c++/11/bits/basic_string.h:48,
                 from /usr/include/c++/11/string:55,
                 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 rings.cpp:1:
/usr/include/c++/11/bits/ranges_base.h:136:10: note:   'std::ranges::__cust_access::end'
  136 |     void end(const auto&) = delete;
      |          ^~~