Pagini recente » Cod sursa (job #3270053) | Cod sursa (job #3215345) | Cod sursa (job #3260890) | Cod sursa (job #458935) | Cod sursa (job #1484887)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int Nmax = 100001;
int n, m, s;
int viz[Nmax]={0}, nr[Nmax]={0};
vector <int> lista[Nmax];
queue <int> coada;
void citire()
{
in >> n >> m >> s;
for(int i=1; i<=m; i++)
{
int nod1, nod2;
in >> nod1 >> nod2;
lista[nod1].push_back(nod2);
}
for(int i=1; i<=n; i++)
nr[i] = -1;
}
void afisare()
{
for(int i=1; i<=n; i++)
out<<nr[i]<<' ';
}
int main ()
{
citire();
coada.push(s);
viz[s]=1;
nr[s]=0;
while(!coada.empty())
{
int nod = coada.front();
viz[nod]=1;
for(int i=0; i<lista[nod].size(); i++)
if(!viz[lista[nod][i]])
{
nr[lista[nod][i]] = nr[nod]+1;
coada.push(lista[nod][i]);
}
coada.pop();
}
afisare();
return 0;
}