Pagini recente » Cod sursa (job #2250234) | Cod sursa (job #2864409) | Cod sursa (job #2082897) | Cod sursa (job #2732363) | Cod sursa (job #2970299)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int max_size=100002;
vector <int> graf[max_size];
int costuri[max_size],nr_noduri[max_size],coada[max_size];
int n,m,s,i,j,x,y,q;
int main()
{
fin >> n >> m >> s ;
for (i=1;i<=m;i++)
{
fin >> x >> y ;
graf[x].push_back(y);
}
for (i=1;i<=n;i++)
{
nr_noduri[i]=graf[i].size();
costuri[i]=-1;
}
q=1;
costuri[s]=0;
coada[q]=s;
for (i = 1; i <= q; i++)
for (j = 0; j < nr_noduri[coada[i]]; j++)
if (costuri[graf[coada[i]][j]] == -1)
{
coada[++q] = graf[coada[i]][j];
costuri[coada[q]] = costuri[coada[i]] + 1;
}
for (i=1;i<=n;i++)
{
fout << costuri[i] << " ";
}
return 0;
}