Pagini recente » Cod sursa (job #1289078) | Cod sursa (job #2012933) | Cod sursa (job #2003887) | Cod sursa (job #679568) | Cod sursa (job #408080)
Cod sursa(job #408080)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
long n,m,S;
bool viz[100010];
vector<int> Cost(100010,-1);
vector<int> Graf[100010];
queue<int> Q;
void cit();
void afis();
void rez();
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
cit();
rez();
afis();
return 0;
}
void cit() {
scanf("%ld%ld%ld",&n,&m,&S);
for(long i=1; i<=m;i++) {
long x,y;
scanf("%ld%ld",&x,&y);
Graf[x].push_back(y);
}
}
void rez() {
Cost[S]=0;
Q.push(S);
while( ! Q.empty() ) {
int x=Q.front();
Q.pop();
viz[x]=1;
for(long i=0; i < (long)Graf[x].size(); i++ ) {
if( !viz[ Graf[x][i] ] && Cost [ Graf[x][i] ] == -1) {
Q.push(Graf[x][i]);
Cost[Graf[x][i]]=Cost[x]+1;
}
}
}
}
void afis() {
for(long i=1; i<=n;i++)
printf("%d ",Cost[i]);
}