Pagini recente » Cod sursa (job #422546) | Cod sursa (job #2601735) | Cod sursa (job #2137084) | Cod sursa (job #279566) | Cod sursa (job #798757)
Cod sursa(job #798757)
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
#define N 100005
using namespace std;
int c[N],viz[N];
int n,m,start;
queue <int> Q;
vector <int> a[N];
void citire()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&start);
for(int i=0;i<m;i++)
{
int x,y;
scanf("%d %d",&x,&y);
a[x].push_back(y);
}
}
void bfs(int v)
{
memset(c,-1,sizeof(c));
c[v]=0;
viz[v]=1;
Q.push(v);
//while(!Q.empty())
//{
int x=Q.front();
for(int j=0;j<a[x].size();j++)
{
if(!viz[a[x][j]])
{
viz[a[x][j]]=1;
c[a[x][j]]=1+c[x];
Q.push(a[x][j]);
}
}
// Q.pop();
//}
}
void afisare()
{
freopen("bfs.out","w",stdout);
for(int i=1;i<=n;i++)
printf("%d ",c[i]);
}
int main()
{
citire();
bfs(start);
afisare();
return 0;
}