Pagini recente » Cod sursa (job #1114503) | Cod sursa (job #1998337) | Cod sursa (job #1777252) | Cod sursa (job #713404) | Cod sursa (job #1348780)
#include <cstdio>
#include <queue>
#include <vector>
#define NMAX 100001
using namespace std;
int n,m,sursa,x,y,viz[NMAX];
vector<int> ad[NMAX];
queue<int> Q;
void citire()
{
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&sursa);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
ad[x].push_back(y);
}
fclose(stdin);
}
void afisare()
{
freopen("bfs.out","w",stdout);
for(int i=1;i<=n;i++)
printf("%d ",viz[i]-1);
fclose(stdout);
}
void bfs(int s)
{
Q.push(s);
viz[s]=1;
while(!Q.empty())
{
x=Q.front();
Q.pop();
for(int i=0; i<ad[x].size(); ++i)
if(!viz[ad[x][i]])
{
Q.push(ad[x][i]);
viz[ad[x][i]]=viz[x]+1;
}
}
}
int main()
{
citire();
bfs(sursa);
afisare();
}