Submission #1150842

#TimeUsernameProblemLanguageResultExecution timeMemory
1150842enzyParachute rings (IOI12_rings)C++20
Compilation error
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;
}

Compilation message (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;
      |          ^~~