Pagini recente » Cod sursa (job #3157573) | Cod sursa (job #1542255) | Cod sursa (job #395095) | Cod sursa (job #2576880) | Cod sursa (job #1240925)
#include <cstdio>
#define nmv 100020
#include <queue>
#include <vector>
using namespace std;
long n,m,s;
long cost[nmv];
bool t[nmv];
queue < pair< long , long > > q;
vector < long > gr[nmv];
void read(){
long x,y;
while(m--){
scanf("%ld %ld", &x, &y);
gr[x].push_back(y);
}
}
void print(){
for(long i=1;i<=n;i++)
{
if(t[i]){
printf("%ld ",cost[i]);
continue;
}
printf("-1 ");
}
printf("\n");
}
int main(void){
freopen("bfs.in", "r" ,stdin);
freopen("bfs.out","w" ,stdout);
scanf("%ld %ld %ld", &n,&m,&s);
read();
q.push(make_pair(s,0));
while(!q.empty()){
long ft,sd;
ft=q.front().first;
sd=q.front().second;
t[ft]=1;cost[ft]=sd;
q.pop();
for(vector < long > :: iterator it=gr[ft].begin();it!=gr[ft].end();++it){
if(!t[*it])
q.push(make_pair(*it,sd+1));
}
}
print();
}