Pagini recente » Cod sursa (job #1476966) | Cod sursa (job #2112170) | Cod sursa (job #1568971) | Cod sursa (job #1030568) | Cod sursa (job #2076775)
#include <bits/stdc++.h>
#define Nmax 100111
using namespace std;
int n,m,q[Nmax],viz[Nmax],d[Nmax],s;
vector<int> adj[Nmax];
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<<" ";
}
}