Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #1098654)
#include<fstream>
using namespace std;
typedef struct celula {
int nod;
celula *next;
}*lista;
lista graf[100005],v;
int i,n,cap,coada,deq[100005],drum[100005],s,x,y,m;
int main(void) {
ifstream fin("bfs.in");
ofstream fout("bfs.out");
fin>>n>>m>>s;
for (i=1; i<=m; ++i) {
fin>>x>>y;
v=new celula; v->nod=y; v->next=graf[x]; graf[x]=v;
}
drum[s]=1;
cap=coada=1;
deq[coada]=s;
while (cap<=coada) {
int nodc=deq[cap];
for (lista p=graf[nodc]; p; p=p->next)
if (drum[p->nod]==0) {
drum[p->nod]=drum[nodc]+1;
++coada;
deq[coada]=p->nod;
}
++cap;
}
for (i=1; i<=n; ++i) fout<<drum[i]-1<<" ";
return(0);
}