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