Pagini recente » Cod sursa (job #2415708) | Cod sursa (job #1369996) | Cod sursa (job #398509) | Cod sursa (job #2129197) | Cod sursa (job #1205056)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define MAX 100005
int v[MAX];
queue<int>q;
vector<int> lista[MAX];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n, m, s, i, x, y, nod, nextnod;
scanf("%d%d%d",&n,&m,&s);
for(i=1; i<=m; i++)
{
scanf("%d%d",&x,&y);
lista[x].push_back(y);
}
q.push(s);
v[s]=1;
while(!q.empty())
{
nod = q.front();
for(i=0; i<lista[nod].size(); i++){
nextnod=lista[nod][i];
if(v[nextnod]!=0)
continue;
q.push(nextnod);
v[nextnod] = v[nod]+1;
}
q.pop();
}
for(i=1; i<=n; i++)
printf("%d ",v[i]-1);
return 0;
}