Pagini recente » Cod sursa (job #1818472) | Arhiva de probleme | Cod sursa (job #1073749) | Cod sursa (job #1858231) | Cod sursa (job #634828)
Cod sursa(job #634828)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
vector<long int> a[100001];
long int viz[100001],n,m;
void distanta_varfuri(long int v)
{ queue<long int> c;
long int primul,j;
c.push(v);
for(j=1;j<=n;j++)
viz[j]=-1;
viz[v]=0;
while(c.empty()==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;
}
c.pop();
}
}
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);
}
distanta_varfuri(s);
for(i=1;i<=n;i++)
fprintf(g,"%ld ",viz[i]);
fclose(f);
fclose(g);
return 0;
}