Pagini recente » Cod sursa (job #1322636) | Cod sursa (job #632848) | Cod sursa (job #1941016) | Cod sursa (job #1691045) | Cod sursa (job #2299169)
#include <fstream>
#include <vector>
using namespace std;
vector <pair<int , int> > v[100005];
int n,m,i,x,y,nr,bk,start,start2,Max,val[100005],identic[100005],poz[100005];
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
if(x!=y)
{
val[x]++;
val[y]++;
v[x].push_back(make_pair(y,v[y].size()));
v[y].push_back(make_pair(x,v[x].size()-1));
}
else
identic[x]++;
}
for(i=1;i<=n;i++)
{
if(val[i]>Max)
{
Max=val[i];
start=i;
}
if(val[i]%2==1)
{
nr++;
start2=i;
}
}
if(nr>2)
g<<-1;
else
{
i=1;
if(nr==2)
start=start2;
while(i<=m)
{
g<<start<<' ';
while(identic[start])
{
g<<start<<' ';
identic[start]--;
i++;
}
while(v[start][poz[start]].first==-1)
poz[start]++;
bk=start;
start=v[start][poz[start]].first;
v[start][v[bk][poz[bk]].second].first=-1;
poz[bk]++;
i++;
}
}
return 0;
}