Pagini recente » Cod sursa (job #1044780) | Cod sursa (job #879406) | Cod sursa (job #977655) | Cod sursa (job #2497830) | Cod sursa (job #2501722)
#include <cstdio>
#include <vector>
#include <queue>
#define maxVertices 101024
using namespace std;
int vertices,arces,startingVertice;
int sol[101024];
vector <int> graph[maxVertices];
void addV(int from,int to) {
graph[from].push_back(to);
}
void read() {
int i,from,to;
scanf("%d%d%d",&vertices,&arces,&startingVertice);
for(i=0;i<arces;++i) {
scanf("%d%d",&from,&to);
addV(from,to);
}
}
void mmset() {
int i;
for(i=1;i<=vertices;++i) {
sol[i]=-1;
}
}
void fillVertices() {
queue <int> lastVisited;
int pos,i;
lastVisited.push(startingVertice);
sol[startingVertice]=0;
while(!lastVisited.empty()) {
pos=lastVisited.front();
lastVisited.pop();
for(auto&i:graph[pos]) {
if(sol[i]<0) {
sol[i]=sol[pos]+1;
lastVisited.push(i);
}
}
}
}
void solve() {
mmset();
fillVertices();
}
void display() {
int i;
for(i=1;i<=vertices;++i) {
printf("%d ",sol[i]);
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
read();
solve();
display();
return 0;
}