Submission #230742

#TimeUsernameProblemLanguageResultExecution timeMemory
230742nicolaalexandraPotemkin cycle (CEOI15_indcyc)C++14
30 / 100
1092 ms2040 KiB
#include <bits/stdc++.h>
#define DIM 1010
using namespace std;

set <int> s;
deque <int> d,sol;
vector <int> L[DIM];
int n,m,x,y,i,j,ok;
int level[DIM];

void dfs (int nod, int tata){
    if (ok)
        return;

    d.push_back(nod);
    s.insert(nod);
    level[nod] = 1 + level[tata];

    for (auto vecin : L[nod]){
        if (level[vecin])
            continue;

        /// verific daca are muchii de intoarcere
        int maxi = -1, poz = 0;
        for (auto it : L[vecin]){
            if (it != nod && s.find(it) != s.end()){ /// muchie de intoarcere
                if (level[it] > maxi)
                    maxi = level[it], poz = it;
            }
        }

        if (!poz)
            dfs (vecin,nod);
        else {
            if (level[nod] + 1 - level[poz] + 1 >= 4){
                /// am gasit un ciclu bun
                sol.push_back(vecin);
                while (d.back() != poz){
                    sol.push_back(d.back());
                    d.pop_back();
                }
                sol.push_back(poz);
                ok = 1;
            }
        }
    }

    /// am terminat cu nod, trb sa l sterg
    d.pop_back();
    s.erase(nod);
}
int main (){

    //ifstream cin ("date.in");
    //ofstream cout ("date.out");

    cin>>n>>m;
    for (i=1;i<=m;i++){
        cin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }

    for (i=1;i<=n;i++){
        d.clear(), s.clear(), sol.clear();
        memset (level,0,sizeof level);
        ok = 0;
        dfs (i,0);
        if (ok){
            for (auto it : sol)
                cout<<it<<" ";
            return 0;
        }
    }


    cout<<"no";

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