Pagini recente » Cod sursa (job #2469161) | Cod sursa (job #1237236) | Cod sursa (job #13661) | Cod sursa (job #1662142) | Cod sursa (job #1164952)
#include <cstdio>
#include <vector>
#include <queue>
#define maxn 100005
#define INF 999999
using namespace std;
FILE *f=fopen("bfs.in","r");
FILE *g=fopen("bfs.out","w");
vector <int> G[maxn],viz(maxn,0),d(maxn,INF);
queue <int> Q;
int n,m,s,x,y;
void bfs(int s){
viz[s]=1;
d[s]=0;
Q.push(s);
while(Q.empty()==0){
int nod=Q.front();
Q.pop();
for(int i=0;i<G[nod].size();i++)
if(viz[G[nod][i]]==0){
Q.push(G[nod][i]);
viz[G[nod][i]]=1;
d[G[nod][i]]=d[nod]+1;
}
}
}
int main()
{
fscanf(f,"%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++){
fscanf(f,"%d%d",&x,&y);
G[x].push_back(y);
}
bfs(s);
for(int i=1;i<=n;i++)
if(d[i]!=INF)
fprintf(g,"%d ",d[i]);
else
fprintf(g,"-1 ");
return 0;
}