Pagini recente » Cod sursa (job #1251199) | Cod sursa (job #1151789) | Cod sursa (job #848694) | Cod sursa (job #236100) | Cod sursa (job #1576613)
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int coada[1000001],start[1000001],t[2][1000001],v[1000001];
void bf (int n,int s)
{
int pi=1,ps=1,p;
coada[1]=s;
while(ps<=pi)
{
p=start[coada[ps]];
while(p!=0)
{
if(v[t[0][p]]==0) pi++,coada[pi]=t[0][p],v[t[0][p]]=v[coada[ps]]+1; p=t[1][p];
} ps++;
}
}
int main()
{
int i,m,n,p,p1,k=0,s;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>p>>p1;
if(p!=p1)
{ k++;
t[0][k]=p1;
t[1][k]=start[p];
start[p]=k;
}
}
bf(n,s);
for(i=1;i<=n;i++)
{
if(s==i) g<<0<<" ";
else
{
if(v[i]==0) g<<-1<<" ";
else g<<v[i]<<" ";
}
}
f.close();
g.close();
return 0;
}