Mai intai trebuie sa te autentifici.
Cod sursa(job #789945)
Utilizator | Data | 19 septembrie 2012 22:17:32 | |
---|---|---|---|
Problema | BFS - Parcurgere in latime | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.01 kb |
#include<fstream>
using namespace std;
typedef struct no{
int val;
no *urm;
} nod;
nod *vecini[100001];
long dist[100001];
void bf(int k){
long coada[100001],start,final,cont;
nod *aux;
coada[1]=k;
start=1;
final=1;
cont=1;
while(start<=final){
aux=vecini[coada[start]];
while(aux){
if(dist[aux->val]==0){
coada[++final]=aux->val;
dist[coada[final]]=cont;
}
aux=aux->urm;
}
cont++;
start++;
}
}
int main()
{
int n,m,s,i,x,y;
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
nod *aux=new nod;
aux->val=y;
aux->urm=vecini[x];
vecini[x]=aux;
}
bf(s);
for(i=1;i<=n;i++)
if(i==s)
g<<0<<" ";
else
if(dist[i]==0)
g<<"-1"<<" ";
else
g<<dist[i]<<" ";
return 0;
}