Pagini recente » Cod sursa (job #270062) | Cod sursa (job #266332) | Cod sursa (job #1081662) | Cod sursa (job #2161677) | Cod sursa (job #2544542)
#include <cstdio>
#include <vector>
#include <queue>
#define verticesMax 101024
using namespace std;
int vertices,roads[verticesMax];
int startingVertice;
vector <int> graph[verticesMax];
queue <int> q;
void mset() {
int i;
for(i=0;i<verticesMax;++i) {
roads[i]=-1;
}
}
void read() {
int i,edges,v1,v2;
scanf("%d%d%d",&vertices,&edges,&startingVertice);
--startingVertice;
for(i=0;i<edges;++i) {
scanf("%d%d",&v1,&v2);
--v1;
--v2;
graph[v1].push_back(v2);
}
}
void solve() {
int vert;
roads[startingVertice]=0;
for(q.push(startingVertice);!q.empty();q.pop()) {
vert=q.front();
for(auto i:graph[vert]) {
if(roads[i]<0) {
roads[i]=roads[vert]+1;
q.push(i);
}
}
}
}
void display() {
int i;
for(i=0;i<vertices;++i) {
printf("%d ",roads[i]);
}
}
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
mset();
read();
solve();
display();
return 0;
}