Pagini recente » Rating Catiru Stefan (StefanC1234) | Cod sursa (job #2976849) | Cod sursa (job #592546) | Cod sursa (job #1634268) | Cod sursa (job #890216)
Cod sursa(job #890216)
#include <fstream>
using namespace std;
int n,m,s,start[100001],t[2][1000002];
void citire()
{
int i,k=0,a,b;
ifstream fin("bfs.in");
fin>>n>>m>>s;
for(i=1;i<=m;++i)
{
fin>>a>>b;
k++;
t[0][k]=b;
t[1][k]=start[a];
start[a]=k;
}
}
void bf()
{
ofstream fout("bfs.out");
int pr,ul,coada[100001],viz[100001],i;
pr=1;ul=1;
coada[1]=s;
viz[s]=0;
while(pr<=ul)
{
for(i=start[coada[pr]];i!=0;i=t[1][i])
{
if(viz[t[0][i]]==0&&t[0][i]!=s)
{
ul++;
coada[ul]=t[0][i];
viz[t[0][i]]=viz[coada[pr]]+1;
}
}
pr++;
}
for(i=1;i<=n;i++)
if(viz[i]!=0||i==s)
fout<<viz[i]<<' ';
else
fout<<"-1"<<' ';
fout.close();
}
int main()
{
citire();
bf();
return 0;
}