Pagini recente » Cod sursa (job #322193) | Cod sursa (job #2120421) | Cod sursa (job #1952993) | Cod sursa (job #2538808) | Cod sursa (job #633394)
Cod sursa(job #633394)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
vector<long int> a[100001];
long int viz[500001];
long int n,m;
long int distanta_varfuri(long int v1,long int v2)
{ queue<long int> c;
long int primul,j;
c.push(v1);
for(j=1;j<=n;j++)
viz[j]=-1;
viz[v1]=0;
while(c.size()!=0) {
primul=c.front();
for(j=0;j<a[primul].size();j++)
if(viz[a[primul][j]]==-1) {
c.push(a[primul][j]);
viz[a[primul][j]]=viz[primul]+1;
if(a[primul][j]==v2)
return viz[a[primul][j]];
}
c.pop();
}
return viz[v2];
}
int main()
{ long int i,x,y,s;
FILE *f,*g;
f=fopen("bfs.in","r");
g=fopen("bfs.out","w");
fscanf(f,"%ld %ld %ld",&n,&m,&s);
for(i=1;i<=m;i++) {
fscanf(f,"%ld %ld",&x,&y);
a[x].push_back(y);
}
for(i=1;i<=n;i++)
fprintf(g,"%ld ",distanta_varfuri(s,i));
fclose(f);
fclose(g);
return 0;
}