Pagini recente » Cod sursa (job #1821883) | Cod sursa (job #1289265) | Cod sursa (job #1546750) | Monitorul de evaluare | Cod sursa (job #3040589)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in"); // conex si m=n-1
ofstream fout ("bfs.out");
int a[1001][1001];
int n,m,start,x,y;
int vizite[100001],orase[100001],distanta[100001];
void BFS(int start){
int st=1,dr=1;
vizite[start]=1;
distanta[start]=0;
orase[dr]=start;
while(st<=dr){
int city=orase[st];
for(int i=1;i<=n;i++){
if (vizite[i]==0 && a[city][i]==1){
vizite[i]=1;
dr++;
orase[dr]=i;
distanta[i]=distanta[city]+1;//adaug 1 la fiecare adiacenta
}
}
st++;
}
}
int main()
{
fin>>n>>m>>start;
while(fin>>x>>y){
a[x][y]=1;
}
for(int i=1;i<=n;++i){
distanta[i]=-1;
}
BFS(start);//incepem de la primul nod
for(int i=1;i<=n;++i){
fout<<distanta[i]<<" ";
}
return 0;
}