Pagini recente » Cod sursa (job #3163871) | Cod sursa (job #2360991) | Cod sursa (job #2602674) | Cod sursa (job #2679198) | Cod sursa (job #2240516)
#include <iostream>
#include <vector>
#include <queue>
#define NMAX 100000+5
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int numberOfNodes,numberOfEdges,source;
std::vector<int> Graph[NMAX];
int Dist[NMAX];
std::queue<int> Queue;
scanf("%d %d %d",&numberOfNodes,&numberOfEdges,&source);
for(int i=0;i<=numberOfNodes;i++)
Dist[i]=-1;
for(int i=0;i<numberOfEdges;i++) {
int x,y;
scanf("%d %d",&x,&y);
Graph[x].push_back(y);
}
Queue.push(source);
Dist[source]=0;
while(!Queue.empty()) {
int x=Queue.front();
Queue.pop();
for(int y : Graph[x]) {
if(Dist[y]==-1) {
Dist[y]=Dist[x]+1;
Queue.push(y);
}
}
}
for(int i=1;i<=numberOfNodes;i++)
printf("%d ",Dist[i]);
return 0;
}