Pagini recente » Cod sursa (job #3151076) | Cod sursa (job #592942) | Cod sursa (job #3147649) | Cod sursa (job #1779729) | Cod sursa (job #1542777)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector <int> lv[100010];
vector <int>::iterator ii;
queue <int> q;
int length[100010];
int used[100010];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int a,b,n,m,S;
scanf("%d%d%d",&n,&m,&S);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
lv[a].push_back(b);
}
q.push(S);
used[S]=1;
length[S]=1;
int cost = 0;
while(!q.empty())
{
int cnt = q.front();
q.pop();
for(ii=lv[cnt].begin();ii!=lv[cnt].end();++ii)
if(!used[*ii])
{
length[*ii]=length[cnt]+1;
q.push(*ii);
used[*ii]=1;
}
}
for(int i=1;i<=n;i++)
printf("%d ",length[i]-1);
return 0;
}