Mai intai trebuie sa te autentifici.
Cod sursa(job #2378555)
| Utilizator | Data | 12 martie 2019 13:44:34 | |
|---|---|---|---|
| Problema | BFS - Parcurgere in latime | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.77 kb |
#include <iostream>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int n,v[10001],k=1;
queue <int> m[10001];
int coada[10001],d[10001];
void BFS(int x)
{
int st=1,dr=1,vecin;
coada[1]=x;
v[x]=1;
d[x]=0;
while(st<=dr)
{
x=coada[st];
while(!m[x].empty())
{
vecin=m[x].front();
if(v[vecin]==0)
{
v[vecin]=1;
d[vecin]=d[x]+1;
k++;dr++;
coada[k]=vecin;
}
m[x].pop();
}
st++;
}
}
int main()
{
int mu,x,i,a,b;
fin>>n>>mu>>x;
for(i=1;i<=n;i++)
d[i]=-1;
for(i=1;i<=mu;i++)
{
fin>>a>>b;
m[a].push(b);
}
BFS(x);
for(i=1;i<=n;i++)
fout<<d[i]<<" ";
return 0;
}
