Cod sursa(job #2638615)

Utilizator hhhhhhhAndrei Boaca hhhhhhh Data 29 iulie 2020 10:08:58
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m;
vector<int> sol;
vector<int> muchii[200001];
pii g[500001];
bool use[500001];
void dfs(int nod)
{
    bool found=0;
    for(auto j:muchii[nod])
        if(use[j]==0)
        {
            use[j]=1;
            if(g[j].first==nod)
                dfs(g[j].second);
            else
                dfs(g[j].first);
        }
    sol.push_back(nod);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        fin>>x>>y;
        g[i]={x,y};
        muchii[x].push_back(i);
        if(x!=y)
            muchii[y].push_back(i);
    }
    dfs(1);
    //reverse(sol.begin(),sol.end());
    sol.pop_back();
    for(int i=0;i<sol.size();i++)
        fout<<sol[i]<<" ";
    return 0;
}