Cod sursa(job #1149612)

Utilizator dumytruKana Banana dumytru Data 22 martie 2014 09:24:34
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

vector<vector<long long> > graf;
vector<long long> is_visited,ciclu;
vector<long long>::iterator it;
queue<long long> q;
long long n,m;

void euler (long long v)
{
    long long w;
    while(graf[v].size())
    {
        w = *graf[v].begin();
        if(graf[v].size())
            graf[v].erase(graf[v].begin());
        if(graf[w].size()){
            it=find(graf[w].begin(), graf[w].end(), v);
            graf[w].erase(it);
        }
        euler(w);
    }
    ciclu.push_back(v);
}
int main()
{
    ifstream f("ciclueuler.in");
    ofstream g("ciclueuler.out");
    long long i,u,v;
    f>>n>>m;
    graf.resize(n+1);
    is_visited.resize(n+1);
    for(i=1;i<=m;i++)
    {
        f>>u>>v;
        graf[u].push_back(v);
        graf[v].push_back(u);
    }
    euler(1);
    for(i=0;i<ciclu.size()-1;i++)
        g<<ciclu[i]<<' ';
    return 0;
}