Pagini recente » Cod sursa (job #749722) | Cod sursa (job #1479093) | Cod sursa (job #983678) | Cod sursa (job #2546022) | Cod sursa (job #635581)
Cod sursa(job #635581)
#include<fstream>
#include <vector>
#define inf 1000001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> a[100001];
int n,m,b,c[100001],s,viz[100001],d[100001];
void citire(int &n)
{int x,y;
f>>n>>m>>s;
for(int i=1;i<=m;i++){
f>>x>>y;
a[x].push_back(y);
}
}
void BFS(int s){
int p,u,v;
for(int i=1;i<=n;i++){
viz[i]=0;
d[i]=inf;
}
c[1]=s;
viz[s]=1;
p=u=1;
d[s]=0;
while(p<=u){
v=c[p];
for(int i=0;i<a[v].size();i++)
if(viz[a[v][i]]==0){
u++;
c[u]=a[v][i];
viz[a[v][i]]=1;
d[a[v][i]]=d[v]+1;
}
p++;
}
for(int i=1;i<=n;i++)
if(d[i]!=inf)
g<<d[i]<<" ";
else
g<<"-1"<<" ";
}
int main()
{
citire(n);
BFS(s);
return 0;
}