Pagini recente » Cod sursa (job #1979807) | Cod sursa (job #487895) | Cod sursa (job #636350) | Cod sursa (job #2798181) | Cod sursa (job #1648504)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int a[22000][22001],st[22001],c[22001],n,s,m,x,y,i,i_c,sf_c,t[22001],p;
void citire()
{
fin>>n>>m>>s;
for(i=1;i<=m;i++)
{
fin>>x>>y;
a[x][y]=1;
}
}
void bf_r()
{
int k;
while(i_c<=sf_c)
{
for(k=1;k<=n;k++)
{
if(a[c[i_c]][k]==1 && st[k]==0)
{
sf_c++;
c[sf_c]=k;
st[k]=1;
t[k]=c[i_c];
}
}
i_c++;
}
}
void drum(int i,int &p)
{
if(t[i] && i!=s)
{
drum(t[i],p);
p++;
}
}
int main()
{
citire();
i_c=sf_c=1;
c[i_c]=s;
st[s]=1;
bf_r();
for(i=1;i<=n;i++)
{
p=0;
if(i==s)
fout<<0<<" ";
else
{
drum(i,p);
if(p==0)
fout<<-1<<" ";
else
fout<<p<<" ";
}
}
return 0;
}