Pagini recente » Cod sursa (job #2934769) | Cod sursa (job #3150079) | Cod sursa (job #1937447) | Cod sursa (job #1240946) | Cod sursa (job #1240944)
#include <cstdio>
#define nmv 100020
#include <queue>
#include <vector>
#include <cstring>
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++)
{
printf("%lld ",cost[i]);
}
printf("\n");
}
int main(void){
freopen("bfs.in", "r" ,stdin);
freopen("bfs.out","w" ,stdout);
memset(cost,-1,sizeof(cost));
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] || cost[*it]>sd+1)
q.push(make_pair(*it,sd+1));
}
}
print();
}