Submission #1150113

#TimeUsernameProblemLanguageResultExecution timeMemory
1150113enzyParachute rings (IOI12_rings)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int n, pai[maxn], ciclo, sou[maxn], qtd4, id4, add[maxn], t[maxn];
vector<int>v[maxn], grnd;
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 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){
        if(!sou[na]) ciclo++;
        sou[na]++;
    }
    if(na!=nb) merge(na,nb);
    if(v[a].size()==3){
        grnd.push_back(a);
        for(int viz : v[a]) t[viz]++;
    }
    if(v[b].size()==3){
        grnd.push_back(b);
        for(int viz : v[b]) t[viz]++;
    }
    if(v[a].size()==4){ qtd4++; id4=a;}
    if(v[b].size()==4){ qtd4++; id4=b;}
}

int CountCritical(){
    int resp=0;
    if(qtd4>=2||ciclo>=2) return 0;
    // agora temos apenas um ou menos ciclos e tds tem grau menor ou igual a 3
    if(qtd4){
        if((ciclo&&sou[find(id4)]||(!ciclo){ // se tem ciclo precisamos quebrá-lo
            if(grnd.size()){ // precisamos garantir tbm q n tem caras com grau maior q 3
                if(t[id4]+1==grnd.size()) resp++; // tiro td uma aresta de td mundo q tem grau maior ou igual a 3
            }else resp++;
        }
        return resp;
    }
    for(int i=0;i<n;i++){
        if((ciclo&&sou[find(i)]||(!ciclo){ // se tem ciclo precisamos quebrá-lo
            if(grnd.size()){ // precisamos garantir tbm q n tem caras com grau maior q 3
                int extra=0;
                if(v[i].size()==3) extra++;
                if(extra+t[i]==grnd.size()) resp++; // tiro td uma aresta de td mundo q tem grau maior ou igual a 3
            }else resp++;
        }
    }
    return resp;
}

Compilation message (stderr)

rings.cpp: In function 'void Init(int)':
rings.cpp:15:5: error: 'resp' was not declared in this scope
   15 |     resp = n = N_;
      |     ^~~~
rings.cpp: In function 'int CountCritical()':
rings.cpp:44:44: error: expected ')' before '{' token
   44 |         if((ciclo&&sou[find(id4)]||(!ciclo){ // se tem ciclo precisamos quebrá-lo
      |            ~                               ^
      |                                            )
rings.cpp:48:10: error: expected ')' before 'return'
   48 |         }
      |          ^
      |          )
   49 |         return resp;
      |         ~~~~~~
rings.cpp:44:11: note: to match this '('
   44 |         if((ciclo&&sou[find(id4)]||(!ciclo){ // se tem ciclo precisamos quebrá-lo
      |           ^
rings.cpp:52:42: error: expected ')' before '{' token
   52 |         if((ciclo&&sou[find(i)]||(!ciclo){ // se tem ciclo precisamos quebrá-lo
      |            ~                             ^
      |                                          )
rings.cpp:58:10: error: expected ')' before '}' token
   58 |         }
      |          ^
      |          )
   59 |     }
      |     ~     
rings.cpp:52:11: note: to match this '('
   52 |         if((ciclo&&sou[find(i)]||(!ciclo){ // se tem ciclo precisamos quebrá-lo
      |           ^
rings.cpp:59:5: error: expected primary-expression before '}' token
   59 |     }
      |     ^