Pagini recente » Cod sursa (job #725153) | Cod sursa (job #2649317) | Cod sursa (job #3030210) | Cod sursa (job #1147085) | Cod sursa (job #1892139)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int oo=100002;
struct nod{int inf;nod*urm;};
nod*L[oo];
int n,m,viz[oo],s;
void citire(){
in>>n>>m>>s;
int i,x,y;
nod *p;
for(i=1;i<=m;i++)
{ in>>x>>y;
p=new nod;
p->inf=y;
p->urm=L[x];
L[x]=p;
}
}
void bfs(int x){nod*q;
int i,p,u,y,c[oo];
for(i=1;i<=n;i++)
viz[i]=-1;
viz[x]=0;
p=u=1;
c[u]=x;
while(p<=u){
y=c[p];p++;
q=L[y];
while(q){
if(viz[q->inf]==-1){
viz[q->inf]=viz[y]+1;
c[++u]=q->inf;}
q=q->urm;}
}
}
void rez(){
bfs(s);
int i;
for(i=1;i<=n;i++)
out<<viz[i]<<" ";
out<<"\n";
}
int main(){
citire();
rez();
in.close();
out.close();
return 0;}