Submission #596085

#TimeUsernameProblemLanguageResultExecution timeMemory
596085promaParachute rings (IOI12_rings)C++17
20 / 100
4078 ms62472 KiB
#include <bits/stdc++.h> using namespace std; int n, cnt = 0, used[5005]; vector <int> deg; vector <vector <int>> g; void Init(int N_) { n = N_; deg.resize(n, 0); g.resize(n); } void Link(int A, int B) { deg[A] ++; deg[B] ++; g[A].push_back(B); g[B].push_back(A); if (deg[A] == 3) cnt ++; if (deg[B] == 3) cnt ++; } int cnt1, cnt2, cnt3; void dfs(int v, int skip) { used[v] = 1; int degree = 0; for (auto i: g[v]) { if (!used[i] and i != skip) dfs(i, skip); if (i != skip) degree ++; } if (degree == 1) cnt1 ++; if (degree == 2) cnt2 ++; if (degree > 2) cnt3 ++; } int CountCritical() { int res = 0; for (int v = 0; v < n; v ++) { int flag = 1; memset(used, 0, sizeof(used)); for (int i = 0; i < n; i ++) { if (i == v) continue; if (!used[i]) { cnt1 = cnt2 = cnt3 = 0; dfs(i, v); if (cnt3) flag = 0; if (!cnt1 and cnt2) flag = 0; } } res += flag; } return res; }
#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...