Pagini recente » Cod sursa (job #2938802) | Cod sursa (job #1126420) | Cod sursa (job #2186795) | Cod sursa (job #2853879) | Cod sursa (job #2379869)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N,M,S;
vector <int> D(NMAX,-1);
vector <vector <int>> G(NMAX);
void citire()
{
int x,y;
fin>>N>>M>>S;
for(int i=0;i<M;i++)
{
fin>>x>>y;
G[x].push_back(y);
}
}
void bfs(int x)
{
queue <int> coada;
D[x]=0;
coada.push(x);
while(!coada.empty())
{
int c= coada.front();
coada.pop();
for(int i=0;i<G[c].size();i++) {
int temp = G[c][i];
if (D[temp]==-1) {
D[temp] = D[c] + 1;
coada.push(temp);
}
}
}
}
int main() {
citire();
bfs(S);
for(int i=1;i<=N;i++)
fout<<D[i]<<" ";
return 0;
}