Pagini recente » Cod sursa (job #1659421) | Cod sursa (job #1165142) | Cod sursa (job #310251) | Cod sursa (job #1867203) | Cod sursa (job #865345)
Cod sursa(job #865345)
#include <fstream>
#define nmax 8
using namespace std;
ifstream f("santa.in");
ofstream g("santa.out");
int ST[nmax],CH[nmax],A[nmax][nmax];
int N,M,S,E,Q,STOP;
int valid(int k)
{
if((!CH[ST[k]])&&(A[ST[k]][ST[k-1]]))
return 1;
else
return 0;
}
void afisare()
{
int i;
g<<N<<'\n';
for(i=1;i<=N;i++)
g<<ST[i]<<' ';
g<<'\n';
g.close();
}
void backtrack(int k)
{
if(!STOP)
{
int i;
for(i=1;i<=N;i++)
{
if(!STOP)
{
ST[k]=i;
if(valid(k))
{
CH[ST[k]]=1;
if(k==N)
{
afisare();
STOP=1;
}
else
backtrack(k+1);
CH[ST[k]]=0;
}
}
else
return;
}
}
else
return;
}
int main()
{
int x,y;
f>>N>>M;
if(N>7)
g<<"No chance\n";
else
{
for(int i=1;i<=M;i++)
{
f>>x>>y;
A[x][y]=A[y][x]=1;
}
f>>S>>E>>Q;
f.close();
ST[1]=Q;
CH[ST[1]]=1;
backtrack(2);
if(!STOP)
g<<"No chance\n";
g.close();
}
return 0;
}