Submission #317383

#TimeUsernameProblemLanguageResultExecution timeMemory
317383mohamedsobhi777Parachute rings (IOI12_rings)C++14
20 / 100
4009 ms1452 KiB
#include <bits/stdc++.h>

using namespace std;
int N;
const int cn = 10000;

vector<int> adj[cn];
int deg[cn];
int vis[cn];
int c;
bool bd = 1;
int del;
vector<int> vec;
void dfs(int x, int p)
{
        vis[x] = c;
        int ch = (p != x);
        vec.push_back(x);
        for (auto u : adj[x])
        {
                if (u == p || del == u)
                        continue;
                if (vis[u] == c)
                        bd = 0;
                else
                        dfs(u, x), ++ch;
        }
        if (ch > 2)
                bd = 0;
}

int brute()
{
        set<int> cri;
        for (int i = 0; i < N; ++i)
        {
                ++ c ;
                del = i;
                for (auto u : adj[i])
                {
                        deg[u]--;
                        deg[i]--;
                }
                bool ok = 1;
                vec.clear();
                for (int j = 0; j < N; ++j)
                {
                        if (vis[j] != c && i != j)
                        {
                                bd = 1;
                                dfs(j, j);
                                ok &= bd;
                        }
                }
                if (ok)
                        cri.insert(i);
                for (auto u : adj[i])
                {
                        deg[u]++;
                        deg[i]++;
                }
        }

        return (int)cri.size();
}

void Init(int N_)
{

        N = N_;
}

void Link(int A, int B)
{
        adj[A].push_back(B);
        adj[B].push_back(A);
        deg[A]++;
        deg[B]++;
}

int CountCritical()
{
        return brute();
        return N;
}
#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...