This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include <string>
#define rep(i, n) for (int i=0; i<(n); i++)
#define pb push_back
using namespace std;
int N;
vector<int> G[5000];
int cnt[5000];
void Init(int N_) {
N = N_;
cnt[0] = N;
if (N > 5000) abort();
}
void Link(int A, int B) {
cnt[G[A].size()]--;
cnt[G[B].size()]--;
G[A].pb(B);
G[B].pb(A);
cnt[G[A].size()]++;
cnt[G[B].size()]++;
}
bool has_cycle;
bool used[5000];
void dfs(int x, int p, int except) {
used[x] = true;
for (int t : G[x]) if (t != p && t != except) {
if (used[t]) { has_cycle = true; break; }
dfs(t, x, except);
}
}
int CountCritical() {
int ctr = 0;
rep(i, N) {
rep(j, N) used[j] = false;
has_cycle = false;
rep(j, N) if (i != j && !used[j]) dfs(j, -1, i);
if (has_cycle) continue;
for (int t : G[i]) {
cnt[G[t].size()]--;
cnt[G[t].size()-1]++;
}
cnt[G[i].size()]--;
if (cnt[0]+cnt[1]+cnt[2] == N-1) ctr++;
cnt[G[i].size()]++;
for (int t : G[i]) {
cnt[G[t].size()-1]--;
cnt[G[t].size()]++;
}
}
return ctr;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |