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