Pagini recente » Cod sursa (job #1766616) | Cod sursa (job #2389958) | Cod sursa (job #1812357) | Cod sursa (job #1164747) | Cod sursa (job #1246292)
#include <stdio.h>
#include <queue>
#include <vector>
#define nmax 100001
using namespace std;
FILE *f=fopen("bfs.in","r"),*g=fopen("bfs.out","w");
struct da{
int n,p;};
vector <long> l[nmax];
queue <da> c;
long r[nmax];
int main()
{
long s,i,j,x,y,n,m;
da aux,k;
fscanf(f,"%ld %ld %ld",&n,&m,&s);
for(i=1;i<=m;i++)
{
fscanf(f,"%ld %ld",&x,&y);
l[x].push_back(y);
}
fclose(f);
aux.n=s; aux.p=0;
c.push(aux);
while(c.size())
{
k=c.front();
c.pop();
for(i=0;i<l[k.n].size();i++)
if((!r[l[k.n][i]]&&l[k.n][i]!=s)||r[l[k.n][i]]>k.p+1)
{
aux.p=k.p+1;
r[l[k.n][i]]=k.p+1;
aux.n=l[k.n][i];
c.push(aux);
}
}
for(i=1;i<=n;i++)
if(i!=s&&!r[i])
fprintf(g,"-1 ");
else
fprintf(g,"%ld ",r[i]);
fclose(g);
return 0;
}