Pagini recente » Cod sursa (job #499247) | Cod sursa (job #1488980) | Cod sursa (job #2841094) | Cod sursa (job #392949) | Cod sursa (job #790849)
Cod sursa(job #790849)
#include <stdio.h>
#include <queue>
#include <vector>
#include <bitset>
using namespace std;
int main(){
int n,m,s,x,y;
vector< vector<int> > G;
vector<int> dist;
bitset<100005> viz;
viz.reset();
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d",&n);
for(int i=0;i<=n;i++){vector<int> vg; G.push_back(vg);dist.push_back(0);}
scanf("%d",&m);scanf("%d",&s);
for(int i=0;i<m;i++){
scanf("%d",&x);scanf("%d",&y);
G[x].push_back(y);
}
queue<int> q;
q.push(s);
viz[s]=1;
while(!q.empty()){
int node = q.front();q.pop();
for(int i=0;i<G[node].size();i++){
int v = G[node][i];if(viz[v]) continue;
dist[v]=dist[node]+1;
viz[v]=1;
q.push(v);
}
}
for(int i=1;i<=n;i++)
if(!viz[i])
printf("-1 ");
else
printf("%d ",dist[i]);
return 0;
}