# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1176303 | anha3k25cvp | Potemkin cycle (CEOI15_indcyc) | C++20 | 17 ms | 5960 KiB |
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define dl double
#define st first
#define nd second
#define II pair <int, int>
using namespace std;
const int N = 1 + 1e3;
const int inf = 7 + 1e9;
struct Edge {
int u, v;
};
int node = 0;
vector <Edge> e;
vector <int> l, r, p, used;
vector <vector <int>> adj;
void dfs(int u) {
l[u] = ++ node;
for (int i : adj[u]) {
int v = e[i].u + e[i].v - u;
if (!l[v]) {
p[v] = u;
used[i] = 1;
dfs(v);
}
}
r[u] = node;
}
int main() {
#define TASKNAME ""
ios_base :: sync_with_stdio (0);
cin.tie (0);
if ( fopen( TASKNAME".inp", "r" ) ) {
freopen (TASKNAME".inp", "r", stdin);
freopen (TASKNAME".out", "w", stdout);
}
int n, m;
cin >> n >> m;
e.resize(m + 1);
adj.resize(n + 1);
vector <vector <int>> f(n + 1, vector <int> (n + 1, 0));
for (int i = 1; i <= m; i ++) {
cin >> e[i].u >> e[i].v;
adj[e[i].u].push_back(i);
adj[e[i].v].push_back(i);
}
l.assign(n + 1, 0);
r.assign(n + 1, 0);
p.assign(n + 1, 0);
used.assign(m + 1, 0);
for (int i = 1; i <= n; i ++)
if (!l[i])
dfs(i);
for (int i = 1; i <= m; i ++) {
if (l[e[i].u] > l[e[i].v])
swap(e[i].u, e[i].v);
f[e[i].u][e[i].v] = used[i] ^ 1;
}
vector <II> c;
for (int i = 1; i <= n; i ++)
c.push_back({l[i], i});
sort(c.begin(), c.end());
for (int i = n - 1; i >= 0; i --)
for (int j = i + 2; j < n; j ++) {
int u = c[i].nd, v = c[j].nd, u1, v1 = p[v];
if (l[v] < l[u] || r[u] < l[v])
continue;
for (int id : adj[u]) {
int v2 = e[id].u + e[id].v - u;
if (l[v2] <= l[v] && l[v] <= r[v2]) {
u1 = v2;
break;
}
}
f[u][v] += f[u][v1] + f[u1][v] - f[u1][v1];
}
for (int i = 1; i <= m; i ++) {
if (used[i])
continue;
int u = e[i].u, v = e[i].v;
if (f[u][v] > 1)
continue;
vector <int> a = {v};
while (v != u) {
v = p[v];
a.push_back(v);
}
if (a.size() > 3) {
for (int u : a)
cout << u << ' ';
return 0;
}
}
cout << "no";
return 0;
}
Compilation message (stderr)
# | 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... |
# | 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... |