Submission #444624

#TimeUsernameProblemLanguageResultExecution timeMemory
444624prvocisloPotemkin cycle (CEOI15_indcyc)C++17
100 / 100
158 ms5544 KiB
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

const int maxn = 1e3 + 5;
vector<int> g[maxn];
int e[maxn][maxn], vis[maxn], p[maxn];
void dfs(int u, int s, vector<int> &st)
{
    vis[u] = true;
    if (e[u][s])
    {
        st.push_back(u);
        return;
    }
    for (int v : g[u]) if (!vis[v]) dfs(v, s, st);
}
void bfs(int s, int u1, int u2)
{
    memset(p, -1, sizeof(p));
    queue<int> q;
    q.push(u1);
    p[s] = p[u1] = s;
    while (!q.empty())
    {
        int v = q.front(); q.pop();
        for (int i : g[v]) if (p[i] == -1 && (i == u2 || !e[i][s]))
        {
            q.push(i);
            p[i] = v;
        }
    }
    int vr = u2;
    while (p[vr] != vr)
    {
        cout << vr + 1 << " ";
        vr = p[vr];
    }
    cout << s + 1 << endl;
    exit(0);
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); 
    int n, r;
    cin >> n >> r;
    for (int i = 0, a, b; i < r; i++)
    {
        cin >> a >> b;
        g[--a].push_back(--b), g[b].push_back(a);
        e[a][b] = e[b][a] = true;
    }
    for (int i = 0; i < n; i++) e[i][i] = true;
    for (int i = 0; i < n; i++)
    {
        memset(vis, 0, sizeof(vis));
        for (int j = 0; j < n; j++) if (!vis[j] && !e[i][j])
        {
            vector<int> v;
            dfs(j, i, v);
            for (int u : v) vis[u] = false;
            for (int u1 : v) for (int u2 : v) if (!e[u1][u2])
                bfs(i, u1, u2);
        }
    }
    cout << "no\n";
    return 0;
}
#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...
#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...