Pagini recente » Cod sursa (job #490075) | Cod sursa (job #1133789) | Cod sursa (job #1628957) | Cod sursa (job #2603804) | Cod sursa (job #415312)
Cod sursa(job #415312)
#include<stdio.h>
#include<vector>
#define nmax 100002
using namespace std;
unsigned int n,m,s,k,i,c[nmax],p,u,x,y,ic,viz[nmax],d[nmax];
vector<int> v[nmax];
int main(){
FILE*fin=fopen("bfs.in","r");
FILE*fout=fopen("bfs.out","w");
fscanf(fin,"%d %d %d",&n,&m,&s);
for(i=1;i<=m;i++){
fscanf(fin,"%d %d",&x,&y);
v[x].push_back(y);
}
// for(i=0;i<v[1].size();i++)
// fprintf(fout,"%d ",v[1][i]);
for(i=1;i<=n;i++)
d[i]=-1;
p=1;
c[++u]=s;
d[s]=0;
viz[s]=1;
// for(i=0;i<v[s].size();i++)
/// if(viz[v[s][i]]==0){
// c[++u]=v[s][i];
// viz[v[s][i]]=1;
// d[v[s][i]]=1;
// }
while(p<=u){
for(k=0;k<v[p].size();k++){
if(viz[v[p][k]]==0){
c[++u]=v[p][k];
viz[v[p][k]]=1;
d[v[p][k]]=d[d[p]]+1;
}
}
p++;
}
for(i=1;i<=n;i++)
fprintf(fout,"%d ",d[i]);
fclose(fin);
fclose(fout);
return 0;
}