Cod sursa(job #2084367)

Utilizator enedumitruene dumitru enedumitru Data 9 decembrie 2017 00:12:27
Problema Ciclu Eulerian Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <vector>
#include <list>
#include <cstring>
#define Nmax 100001
using namespace std;
ifstream f("ciclueuler.in"); ofstream g("ciclueuler.out");
vector <int> G[Nmax];
list <int> Q;
int N,M;
bool ok; char s[100000];
void euler(int x)
{   Q.push_back(x);
    while(!Q.empty())
    {   x=Q.front();
        if(G[x].empty()) {Q.pop_front(); g<<x<<' ';}
        else
        {   int i=G[x].back(); G[x].pop_back();
            Q.push_front(i);
            vector<int>::iterator it=G[i].begin(),sf=G[i].end();
            for(;it!=sf;++it)
                if(*it==x) {G[i].erase(it); break;}
        }
    }
}
int main()
{   f>>N>>M;
    for(int x,y,i=1;i<=M;i++)
    {   f>>x>>y; G[x].push_back(y); G[y].push_back(x);}
    euler(1);
    return 0;
}