Pagini recente » Cod sursa (job #2043475) | Cod sursa (job #2082383) | Cod sursa (job #687722) | Cod sursa (job #1741399) | Cod sursa (job #2644654)
#include <bits/stdc++.h>
using namespace std;
ifstream in("santa.in");
ofstream out("santa.out");
#define msj "No chance"
const int lim=45e3+5;
vector<int> vec[lim];
bool ok[lim];
int tip[lim];
int nr=0;
int s,e,q;
bool df(int nod)
{
ok[nod]=1;
if(nod==e) {nr++;return 1;}
tip[nod]=0;
for(int x:vec[nod])
{
if(!ok[x]) tip[x]=df(x);
tip[nod]=max(tip[nod],tip[x]);
}
nr+=tip[nod];
return tip[nod];
}
void afis(vector<int> v)
{
for(int i=0;i<v.size();++i)
out<<v[i]<<' ';
}
vector<int> sol,ans;
void compute(int nod)
{
ok[nod]=1;
ans.push_back(nod);
if(ans.size()==nr)
{
sol=ans;
afis(sol);
exit(EXIT_SUCCESS);
}
for(int x:vec[nod])
if(!ok[x]) compute(x);
ok[nod]=0;
ans.pop_back();
}
int main()
{
int n,m,x,y;
in>>n>>m;
for(int i=1;i<=m;++i)
{
in>>x>>y;
vec[x].push_back(y);
vec[y].push_back(x);
}
in>>s>>e>>q;
df(s);
nr+=1-tip[q];
tip[q]=1;
for(int i=1;i<=n;++i)
ok[i]=0;
out<<nr<<'\n';
compute(q);
return 0;
}