Pagini recente » Cod sursa (job #408439) | Cod sursa (job #3227002) | Cod sursa (job #2494714) | Cod sursa (job #3039648) | Cod sursa (job #628833)
Cod sursa(job #628833)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
FILE *f,*s;
vector <int> v1[1000000];
queue <int> q;
int v2[100000],v3[100000];
int i,j,k,l;
int x,y,z;
void BFS(int nod)
{
for(i=1;i<=x;i++) v3[i]=-1;
v3[nod]=0;
q.push(nod);
while(!q.empty())
{
k=q.front();
q.pop();
for(i=0;i<v2[k];i++)
{
if(v3[v1[k][i]]==-1)
{
q.push(v1[k][i]);
v3[v1[k][i]]=1+v3[k];
}
}
}
}
int main()
{
f=fopen("bfs.in","r");
s=fopen("bfs.out","w");
fscanf(f,"%d %d %d",&x,&y,&z);
for(i=1;i<=y;i++)
{
int a,b;
fscanf(f,"%d %d",&a,&b);
v1[a].push_back(b);
}
for(i=1;i<=x;i++)
v2[i]=v1[i].size();
BFS(z);
for(i=1;i<=x;i++)
fprintf(s,"%d ",v3[i]);
return 0;
}