Submission #1009017

#TimeUsernameProblemLanguageResultExecution timeMemory
1009017RifalParachute rings (IOI12_rings)C++14
0 / 100
4024 ms47208 KiB
#include <bits/stdc++.h> //#include "rings.h" using namespace std; const int N = 1e6 + 5; int n; int cnt = 0; vector<int> v[N]; int deg[N], nod; int sum = 0; bool vis[N], cy; void dfs(int s, int p) { vis[s] = 1; for(auto i : v[s]) { if(i != p && i != nod) { if(vis[i] == 1) { cy = false; } else { dfs(i,s); } } } } void Init(int N_) { n = N_; } void Link(int A, int B) { deg[A]++; deg[B]++; if(deg[A] > 2) cnt++; if(deg[B] > 2) cnt++; v[A].push_back(B); v[B].push_back(A); } int CountCritical() { int sol = 0; sum++; for(int i = 0; i < n; i++) { int cur = cnt; if(deg[i] > 2) cur--; for(auto j : v[i]) { if(deg[j] == 3) cur--; } if(cur == 0) { cy = true; for(int j = 0; j < n; j++) vis[j] = 0; nod = i; for(int j = 0; j < n; j++) { if(vis[j] == 0 && j != nod) { dfs(j,-1); } } if(cy == true) { sol++; } } } return sol; }
#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...