Pagini recente » Istoria paginii utilizator/sierra95 | Clasament dupa rating | Monitorul de evaluare | Istoria paginii utilizator/ervinb | Cod sursa (job #853889)
Cod sursa(job #853889)
#include <cstdio>
#include <stack>
#include <algorithm>
using namespace std;
int n,s,C[1000][1000],v[1000];
stack<int> st;
int eulerian()
{
for(int k=1;k<=n;k++)
{
for(int j=1;j<=n;j++)
if(C[k][j]!=0)
v[k]++;
if(v[k]%2!=0)
return 0;
}
return 1;
}
int main()
{
freopen("date.in","r",stdin);
freopen("date.out","w",stdout);
scanf("%d",&n);
scanf("%d",&s);
for(int k=1;k<=n;k++)
for(int j=1;j<=n;j++)
scanf("%d",&C[k][j]);
int q=eulerian();
if(q)
{
int a,nod,nex;
nod=s;
st.push(s);// pun nodul sursa in stiva
a=1;//are vecini
while(a!=0)
{
nex=0; //caut vecinul in k si il pun in nex
for(int k=1;nex==0 && k<=n;k++)
if(C[nod][k]==1)
{
st.push(k);
C[nod][k]++;
C[k][nod]++;
nex=k;
}
if(nex!=0)
nod=nex;
else
a=0;
}
while( !st.empty() )
{
printf("%d ",st.top() );
st.pop();
}
}
else
printf("Graful nu este Eulerian");
return 0;
}