Pagini recente » Cod sursa (job #3030576) | Cod sursa (job #1809777) | Cod sursa (job #117304) | Cod sursa (job #955513) | Cod sursa (job #2397991)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
queue <int> coada;
vector <int> a[100005];
const int oo=100010;
int N,M,S,Min[100005];
void citeste()
{
fin >> N >> M >> S;
for(int i=1;i<=M;i++)
{
int x,y;
fin >> x >> y;
a[x].push_back(y);
}
for(int i=1;i<=N;i++)
Min[i]=oo;
coada.push(S);
Min[S]=0;
}
void bfs()
{
while(!coada.empty())
{
int nod=coada.front();
coada.pop();
for(int i=0;i<a[nod].size();i++)
{
int vecin=a[nod][i];
if(Min[nod]+1<Min[vecin])
{
coada.push(vecin);
Min[vecin]=Min[nod]+1;
}
}
}
}
void afiseaza()
{
for(int i=1;i<=N;i++)
if(Min[i]==oo)
fout << "-1 ";
else
fout << Min[i] << " ";
}
int main()
{
citeste();
bfs();
afiseaza();
return 0;
}