Pagini recente » Plantatie | Cod sursa (job #1455618) | Cod sursa (job #2722808) | Cod sursa (job #2582273) | Cod sursa (job #1503441)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string.h>
using namespace std;
vector<int> v[100000];
int D[100000];
int n,m,S;
queue<int> Q;
void Read(){
ifstream fin("bfs.in");
int a,b;
fin >> n >> m >> S;
for(int i=0;i<m;i++){ fin >> a >> b;
v[a].push_back(b);
//v[b].push_back(a);
}
memset(D,-1,sizeof(D));
}
void Print(){
/*for(int i=1;i<=n;i++){ cout << i << ":";
for(int j=0;j<v[i].size();j++)
cout << v[i][j];
cout << '\n';
}
cout << '\n';*/
ofstream fout("bfs.out");
for(int i=1;i<=n;i++)
fout << D[i] << ' ';
}
void BFS(){
Q.push(S);
int s;
D[S]=0;
while(!Q.empty()){
s=Q.front(); Q.pop();
for(int i=0;i<v[s].size();i++){
if(D[v[s][i]]==-1){
D[v[s][i]]=D[s]+1;
Q.push(v[s][i]);
}
}
}
}
int main()
{
Read();
BFS();
Print();
}