Pagini recente » Cod sursa (job #2768737) | Cod sursa (job #3293954) | Profil BlackNesta | Cod sursa (job #3170523) | Cod sursa (job #3185333)
//bfs (ai grija daca e orientat sau nu)-> corect
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N, M, S, i, j, a, b, pasi[100002], vis[100002];
vector<int>vecini[100002];
void bfs(int start){
int st = 1, dr = 1;
int x[100002];
x[1] = start;
pasi[start] = 0;
while(st<=dr){
int k = x[st];
vis[k] = 1;
for(auto i : vecini[k]){
if(vis[i] == 0){
pasi[i] = pasi[k] + 1;
x[++dr] = i;
vis[i] = 1;
}
}
st++;
}
}
int main()
{
fin>>N>>M>>S;
for(i=1;i<=M;i++){
fin>>a>>b;
vecini[a].push_back(b);
}
bfs(S);
for(i=1;i<=N;i++){
if(pasi[i]==0 && i!=S){
fout<<-1<<" ";
}else{
fout<<pasi[i]<<" ";
}
}
}