Pagini recente » Cod sursa (job #2634407) | Istoria paginii runda/shiggydiggy123/clasament | Cod sursa (job #2574054) | Cod sursa (job #2675888) | Cod sursa (job #2706878)
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int dist[100001];
int t[2][1000000],start[100001],n,m,k,nrc,i,x,y,c[100001],s;
void bf(int nstart)
{
int p,u,poz,vecin,nod;
c[1]=nstart;p=1;u=1;dist[nstart]=0;
while(p<=u)
{
nod=c[p];
poz=start[nod];
while(poz)
{
int vecin=t[0][poz];
if(dist[vecin]==-1)
{
u++;
c[u]=vecin;
dist[vecin]=dist[nod]+1;
}
poz=t[1][poz];
}
p++;
}
}
int main()
{
fin>>n>>m>>s;
for(i=1;i<=n;i++) dist[i]=-1;
for(i=1;i<=m;i++){
fin>>x>>y;
k++;
t[0][k]=y;
t[1][k]=start[x];
start[x]=k;
}
bf(s);
for(i=1;i<=n;i++) fout<<dist[i]<<' ';
return 0;
}