Pagini recente » Cod sursa (job #2021008) | Cod sursa (job #616028) | Cod sursa (job #2687024) | Cod sursa (job #490751) | Cod sursa (job #2076774)
#include <bits/stdc++.h>
#define Nmax 100111
using namespace std;
int n,m,q[Nmax],viz[Nmax],d[Nmax],s;
vector <int> adj
void bfs (int nod)
{
int st=1,dr=1,q[1]=s,d[s]=0;
while (st-dr+1>0)
{
int nod=q[st];
++st;
for (int i=0;i<adj[nod].size();++i)
{
if (d[adj[nod][i]==-1) || (d[adj[nod][i]>d[nod]+1)
{
d[adj[nod][i]]=d[nod]+1;
++dr;
q[dr]=adj[nod][i];
}
}
}
}
int main()
{
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
fin>>n>>m>>s;
for (int i=1;i<=m;++i)
{
int a,b;
fin>>a>>b;
adj[a].push_back(b);
}
bfs(s);
for (int i=1;i<=n;++i)
{
fout<<d[i]-1<<" ";
}
}