Submission #1226956

#TimeUsernameProblemLanguageResultExecution timeMemory
1226956FaggiParachute rings (IOI12_rings)C++20
20 / 100
4094 ms47964 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||vis[k]==tim+1) 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, cant; tim=0; memset(vis,0,sizeof(vis)); for(i=0; i<n; i++) { tim+=2; ban=0; for(j=0; j<n; j++) { if(j==i) continue; cant=0; for(auto k:grafo[j]) { if(k==i) continue; cant++; } if(cant>2) ban=1; if(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...