Pagini recente » Cod sursa (job #2197301) | Cod sursa (job #3261971) | Cod sursa (job #3285322) | Clasament preONI 2007, Clasa a 10-a | Cod sursa (job #864308)
Cod sursa(job #864308)
#include <fstream>
#include <vector>
#include <list>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> vec[100001];
list <int> v;
list <int>:: iterator it;
int n;
int eulerian()
{
for(int i=1;i<=n;i++)
if(vec[i][0]%2==1) return 0;
return 1;
}
int main()
{
int i,m,x,y,nod,nr=1;
f>>n>>m;
for(i=1;i<=n;i++)
vec[i].push_back(0);
for(i=1;i<=m;i++)
{
f>>x>>y;
vec[x].push_back(y); vec[x][0]++;
vec[y].push_back(x); vec[y][0]++;
}
if(eulerian())
{
v.push_back(1);
while(!v.empty())
{
nod=*v.begin();
if(vec[nod].size()>1)
{
x=vec[nod][1];
v.push_front(x);
vec[nod][1]=vec[nod][vec[nod].size()-1];
vec[nod].pop_back();
for(i=1;i<vec[x].size();i++)
if(vec[x][i]==nod)
{
vec[x][i]=vec[x][vec[x].size()-1];
vec[x].pop_back();
break;
}
}
else
{
if(nr<=m)
{
g<<*v.begin()<<' '; nr++;
}
v.pop_front();
}
}
}
}