Pagini recente » Cod sursa (job #1368129) | Cod sursa (job #825468) | Cod sursa (job #2861239) | Cod sursa (job #1579834) | Cod sursa (job #1030069)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
queue <int> q;
vector <int> v[100001];
FILE*f=fopen("bfs.in","r");
FILE*h=fopen("bfs.out","w");
int n,m,s,d[100001];
void bfs(){
int x,y;
while ( !q.empty() ){
x=q.front();
for ( int i=0;i<v[x].size();++i ){
y=v[x][i];
if ( d[y]==-1 ){
d[y]=1+d[x];
q.push(y);
}
}
q.pop();
}
}
int main()
{
fscanf(f,"%d%d%d",&n,&m,&s);
for ( int i=1;i<=n;++i )
d[i]=-1;
for ( int i=1;i<=m;++i ){
int a,b;
fscanf(f,"%d%d",&a,&b);
v[a].push_back(b);
}
q.push(s);
d[s]=0;
bfs();
for ( int i=1;i<=n;++i )
fprintf(h,"%d ",d[i]);
return 0;
}