Pagini recente » Cod sursa (job #1192570) | Cod sursa (job #30635) | Cod sursa (job #115894) | Cod sursa (job #3139564) | Cod sursa (job #573029)
Cod sursa(job #573029)
#include<fstream>
#include<queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s,cost[100005],w,viz[100005],a,b;
struct nod{ int x; nod *urm;} *v[100005],*p;
queue<int> c;
int main()
{
int i;
f>>n>>m>>s;
for(i=0;i<m;++i)
{ f>>a>>b;
p=new nod;
p->x=b;
p->urm=v[a];
v[a]=p;
}
c.push(s);
viz[s]=1;
while(!c.empty())
{ w=c.front();
p=v[w];
c.pop();
while(p)
{if(!viz[p->x])
{ cost[p->x]=cost[w]+1;
viz[p->x]=1;
c.push(p->x);}
p=p->urm;
}
}
for(i=1;i<=n;i++)
if(cost[i]) g<<cost[i]<<' ';
else if(i==s) g<<0<<' ';
else g<<-1<<' ';
f.close(); g.close();
return 0;
}