Pagini recente » Cod sursa (job #2128777) | Cod sursa (job #1282388) | Cod sursa (job #1814756) | Cod sursa (job #747318) | Cod sursa (job #477282)
Cod sursa(job #477282)
#include <cstdio>
#include <vector>
#include <deque>
#define N_MAX 100005
using namespace std;
FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");
vector <int> graf[N_MAX];
deque <int> c;
int N,M,S,dist[N_MAX];
void bfs(){
dist[S]=0;
c.push_back(S);
int size,son;
while(!c.empty()){
size=graf[c[0]].size();
for(int i=0;i<size;i++){
son=graf[c[0]][i];
if(dist[son]==-1){
dist[son]=dist[c[0]]+1;
c.push_back(son);
}
}
c.pop_front();
}
}
int main(){
fscanf (f,"%d %d %d",&N,&M,&S);
int nod,nod2;
for(int i=1;i<=M;i++){
fscanf(f,"%d %d",&nod,&nod2);
graf[nod].push_back(nod2);
}
memset(dist,-1,sizeof(dist));
bfs();
for(int i=1;i<=N;i++){
fprintf(g,"%d ",dist[i]);
}
fclose(f);
fclose(g);
return 0;
}