Pagini recente » Cod sursa (job #637313) | Cod sursa (job #1348340) | Cod sursa (job #994616) | Cod sursa (job #1201415) | Cod sursa (job #2398798)
#include <fstream>
#include <vector>
#define DIM 100002
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int m, n, s, x, y, st, dr;
bool viz[DIM];
int q[DIM], dist[DIM];
vector<int>graf[DIM];
int main()
{
in>>n>>m>>s;
for(int i=1;i<=m;i++){
in>>x>>y;
graf[x].push_back(y);
}
q[1]=s;
viz[s]=1;
st=1;
dr=1;
while(st<=dr){
int nod=q[st];
st++;
for(int i=0;i< graf[nod].size();i++){
if(viz[graf[nod][i]]==0){
viz[graf[nod][i]]=1;
dist[graf[nod][i]]=dist[nod]+1;
q[++dr]=graf[nod][i];
}
}
}
for(int i=1;i<=n;i++){
if(dist[i]!=0 || i==s){
out<<dist[i]<<" ";
}
else {
out<<"-1"<<" ";
}
}
return 0;
}