Pagini recente » Cod sursa (job #584853) | Cod sursa (job #1278306) | Cod sursa (job #3266585) | Cod sursa (job #2174197) | Cod sursa (job #1492948)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("graf.in");
ofstream fout ("graf.out");
vector <int> q[7505];
int v[7505],d[7505];
deque < int > lx;
inline void dfs()
{
int x;
while(!lx.empty()){
x = lx.front();
lx.pop_front();
for(int i = 0 ; i < q[x].size(); i ++){
if(v[q[x][i]] == -1){
v[q[x][i]] = v[x] + 1;
lx.push_back(q[x][i]);
d[q[x][i]] = d[x];
}
else
if(v[q[x][i]] == v[x] + 1){
d[q[x][i]]++;
}
}
}
}
int main()
{
int n , m,x,y,a,b;
fin >> n >> m >> x >> y;
for(int i = 1 ; i <= m; i++){
fin >> a >> b;
q[a].push_back(b);
q[b].push_back(a);
}
memset(v,-1,sizeof(v));
lx.push_back(x);
v[x] = 0;
dfs();
int e = 0;
for(int i = 1; i <= n ; i++)
if(d[i] == d[y])
lx.push_back(i),e++;
lx.push_back(x);
sort(lx.begin() , lx.begin() + e + 1);
fout << e + 1 << "\n";
for(int i = 0; i < lx.size();i++)
fout << lx[i] << " ";
return 0;
}