Pagini recente » Cod sursa (job #1111774) | Cod sursa (job #2378257) | Cod sursa (job #2526477) | Cod sursa (job #2537253) | Cod sursa (job #420508)
Cod sursa(job #420508)
#include <cstdio>
#include <vector>
#include <list>
using namespace std;
#define MAX 100005
FILE* fin=fopen("bfs.in","r");
FILE* fout=fopen("bfs.out","w");
vector<int>nod[MAX];
int dist[MAX],n,m,s;
void bfs(int beg){
list<int> lst;
lst.push_back(beg);
dist[beg]=0;
while(lst.size()>0){
beg=lst.front();
for(int i=0;i<nod[beg].size();i++){
if(dist[nod[beg][i]]==-1){
dist[nod[beg][i]]=dist[beg]+1;
lst.push_back(nod[beg][i]);
}
}
lst.pop_front();
}
}
int main(){
int x,y;
fscanf(fin,"%d %d %d",&n,&m,&s);
for(int i=0;i<m;i++){
fscanf(fin,"%d %d",&x,&y);
nod[x-1].push_back(y-1);
}
for(int i=0;i<n;i++)
dist[i]=-1;
bfs(s-1);
for(int i=0;i<n;i++)
fprintf(fout,"%d ",dist[i]);
fclose(fin);
fclose(fout);
return 0;
}