Pagini recente » Cod sursa (job #2585329) | Cod sursa (job #2841007) | Cod sursa (job #3288076) | Cod sursa (job #502856) | Cod sursa (job #1214087)
#include <iostream>
#include <vector>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector < int > v[100001];
deque < int > p[2];
bool viz[100001];
int sol[100001];
int main()
{
int N,M,S,x,y,d = 0,nod;
f >> N >> M >> S;
for(int i = 1; i <= M; i++){
f >> x >> y;
v[x].push_back(y);
}
p[0].push_back(S);
p[1].push_back(d);
while(p[0].empty() == false){
nod = p[0][0];
d = p[1][0];
viz[nod] = 1;
sol[nod] = d;
d++;
for(int i = 0; i < v[nod].size(); i++){
if(viz[v[nod][i]] == 0){
p[0].push_back(v[nod][i]);
p[1].push_back(d);
}
}
p[0].pop_front();
p[1].pop_front();
}
for(int i = 1; i <= N; i++){
if(sol[i] == 0 && i != S)
g << -1 << " ";
else
g << sol[i] << " ";
}
return 0;
}