제출 #134656

#제출 시각아이디문제언어결과실행 시간메모리
134656lycPotemkin cycle (CEOI15_indcyc)C++14
70 / 100
1076 ms3312 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
typedef pair<ii, int> ri3;
#define mp make_pair
#define pb push_back
#define fi first
#define sc second
#define SZ(x) (int)(x).size()
#define ALL(x) begin(x), end(x) 
#define REP(i, n) for (int i = 0; i < n; ++i) 
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define RFOR(i, a, b) for (int i = a; i >= b; --i)

const int MAXN = 1e3+5;
const int MAXR = 1e5+5;

int N, R;
vector<ii> el;
vector<int> al[MAXN];
bool conn[MAXN][MAXN];
int pa[MAXN];
vector<int> ans;

void solve(int s) {
    for (auto v : al[s]) {
        queue<int> q;
        FOR(i,1,N) pa[i] = -1;
        pa[v] = 0; q.push(v);
        while (!q.empty()) {
            int u = q.front(); q.pop();
            if (u == v || !conn[u][s]) for (int w : al[u]) if (w != s and pa[w] == -1) pa[w] = u, q.push(w);
        }

        FOR(i,1,N) if (i != v and pa[i] != -1 and !conn[v][i] and conn[s][i]) {
            //cout << "FOUND " << v << " " << s << " " << i << endl;
            ans.push_back(s);
            for (int w = i; w != 0; w = pa[w]) ans.push_back(w);
            assert(SZ(ans) > 3);
            return;
        }
    }
}

int main() {
    //freopen("in.txt", "r", stdin);
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> N >> R;
    FOR(i,1,R){
        int A, B; cin >> A >> B;
        al[A].push_back(B);
        al[B].push_back(A);
        el.emplace_back(A,B);
        conn[A][B] = conn[B][A] = 1;
    }

    FOR(i,1,N) if (ans.empty()) { solve(i); } else break;

    if (ans.empty()) cout << "no" << '\n';
    else FOR(i,0,SZ(ans)-1) cout << ans[i] << (i<SZ(ans)-1?' ':'\n');
}

#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...