Pagini recente » Cod sursa (job #562733) | Cod sursa (job #2235469) | Cod sursa (job #1451685) | Cod sursa (job #2934624) | Cod sursa (job #2828261)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int start[100001],t[2][2000002],viz[100001],coada[100001],prim=1,ultim=1,n,m,s,k;
int dir[100001];
void bfs(int nod)
{
int p,contor=0;
coada[prim]=nod;
viz[nod]=1;
dir[nod]=0;
while(prim<=ultim)
{
contor=dir[coada[prim]];
p=start[coada[prim]];
while(p)
{
if(viz[t[0][p]]==0)
{
dir[t[0][p]]=contor+1;
ultim++;
coada[ultim]=t[0][p];
viz[t[0][p]]=1;
}
p=t[1][p];
}
prim++;
}
}
int main()
{
f>>n>>m>>s;
int o,i,j;
for(o=1;o<=m;o++)
{
f>>i>>j;
k++;
t[0][k]=j;
t[1][k]=start[i];
start[i]=k;
}
dir[s]=0;
bfs(s);
for(o=1;o<=n;o++)
{
if(dir[o]==0&&o!=s) g<<"-1"<<" ";
else
g<<dir[o]<<" ";
}
return 0;
}