Submission #1224134

#TimeUsernameProblemLanguageResultExecution timeMemory
1224134FaggiParachute rings (IOI12_rings)C++20
0 / 100
4096 ms44132 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define forn(i,n) for(i=0; i<n; i++)
#define all(x) x.begin(),x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
using namespace std;
const int MAXN=1e6+1;

vector<ll>grafo[MAXN];

ll n, tim, vis[MAXN];
void Init(int N)
{
    n=N;
}

bool dfs(ll nod, ll pad, ll prob)
{
    vis[nod]=tim;
    for(auto k:grafo[nod])
    {
        if(k==pad||k==prob)
            continue;
        if(vis[k]==tim)
            return 1;
        if(dfs(k,nod,prob))
            return 1;
    }
    vis[nod]=tim+1;
    return 0;
}

int CountCritical()
{
    ll res=0, ban, i, j;
    for(i=0; i<n; i++)
    {
        tim+=2;
        ban=0;
        for(j=0; j<n; j++)
        {
            if(j==i||vis[j]==tim+1)
                continue;
            if(dfs(j,0,i))
                ban=1;
        }
        if(ban==0)
            res++;
    }
    return res;
}
void Link(int a, int b)
{
    grafo[a].pb(b);
    grafo[b].pb(a);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...