Pagini recente » Cod sursa (job #2866526) | Cod sursa (job #369027) | Cod sursa (job #2083596) | Cod sursa (job #2735995) | Cod sursa (job #1894692)
#include <fstream>
#include<climits>
using namespace std;
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
int n,nr,m,cost[1010][1010],start[100010],vecini[1010],p,coada[100010],viz[100010],tata[1010],flux,s;
struct bla
{
int nod,urm;
} t[1000010];
void read ()
{ int a,b,c,k=0;
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
cin>>a>>b; if(b==n) vecini[++p]=a;
t[++k].nod=b; t[k].urm=start[a]; start[a]=k;
}
}
void bfs ()
{ for(int i=1;i<=n;i++) viz[i]=0;
int ps=1,pi=1;
coada[1]=s;
viz[s]=1;
while(ps<=pi)
{
int x=start[coada[ps]];
while(x)
{
if( viz[t[x].nod]==0 )
{viz[t[x].nod]=viz[coada[ps]]+1; coada[++pi]=t[x].nod; }
x=t[x].urm;
} ++ps;
}
}
void write ()
{
for(int i=1;i<=n;i++)
{
if(i==s) cout<<0<<" ";
else
{
if(viz[i]!=0) cout<<viz[i]-1<<" "; else cout<<-1<<" ";
}
}
}
int main()
{
read();
bfs();
write();
cin.close();
cout.close();
return 0;
}