Pagini recente » Cod sursa (job #2982568) | Cod sursa (job #837437) | Cod sursa (job #2271449) | Cod sursa (job #1166906) | Cod sursa (job #2373145)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
#define NMAX 100000
#define MMAX 1000000
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, S, v[NMAX], pas=-1;
queue <int> q[NMAX], c;
void read()
{
fin>>n>>m>>S;
for(int i=1; i<=m; i++)
{
int x, y;
fin>>x>>y;
q[x].push(y);
}
}
void bfs(int nod)
{
c.push(nod);
v[nod]=1;
while(!c.empty())
{
nod=c.front();
c.pop();
while(!q[nod].empty())
{
int next=q[nod].front();
q[nod].pop();
if(!v[next])
{
c.push(next);
v[next]=v[nod]+1;
}
}
}
}
int main()
{
read();
bfs(S);
for(int i=1; i<=n; i++)
fout<<v[i]-1<<" ";
return 0;
}