Pagini recente » Cod sursa (job #250956) | Cod sursa (job #1373097) | Cod sursa (job #2940291) | Cod sursa (job #3168130) | Cod sursa (job #1197811)
#include <stdio.h>
#include <vector>
#include <queue>
#include <string.h>
using namespace std;
vector<int> noduri[100005]; int n,m,t; int dist[100005];
void bfs(int nod){
queue<int> q;
q.push(nod);
dist[nod] = 0;
int cur,i;
while (!q.empty()){
cur = q.front(); q.pop();
for (i=0; i<noduri[cur].size(); i++)
if (dist[noduri[cur][i]] == -1){
dist[noduri[cur][i]] = 1 + dist[cur];
q.push(noduri[cur][i]);
}
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&t);
int x,y,nr=0,i;
for (i=0; i<m; i++)
{
scanf("%d %d",&x,&y);
noduri[x].push_back(y);
}
memset(dist,-1,sizeof(dist));
bfs(t);
for (i=1; i<=n; i++) printf("%d ",dist[i]);
}