Pagini recente » Cod sursa (job #1791877) | Cod sursa (job #174560) | Cod sursa (job #245084) | Cod sursa (job #1853169) | Cod sursa (job #1356684)
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
#define NMAX 100010
using namespace std;
queue <int> q;
vector <int> v[NMAX];
bool viz[NMAX];
int len[NMAX];
int bfs(int start)
{
// memset(len,-1,NMAX);
q.push(start);
len[start]=0;
viz[start]=1;
int x;
while(!q.empty())
{
x=q.front();
for(int i=0;i<v[x].size();i++)
if(!viz[v[x][i]])
{
viz[v[x][i]]=1;
q.push(v[x][i]);
len[v[x][i]]=len[x]+1;
}
q.pop();
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s,a,b;
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
}
for(int i=1;i<=n;i++) len[i]=-1;
bfs(s);
for(int i=1;i<=n;i++)
printf("%d ",len[i]);
printf("\n");
return 0;
}