Pagini recente » Cod sursa (job #1249622) | Cod sursa (job #472899) | Cod sursa (job #440601) | Cod sursa (job #206165) | Cod sursa (job #904834)
Cod sursa(job #904834)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
FILE *f,*s;
int m,n,p,i;
int nod;
vector <int> v[100000];
struct coada
{
int x;
int y;
};
coada nod1,nod2;
queue <coada> q;
int v1[100000],v2[100000];
void Solve()
{
nod1.x=p;
nod1.y=0;
q.push(nod1);
for (i=1;i<=n;i++) v1[i]=-1;
v1[p]=0;
v2[p]=1;
while(!q.empty())
{
nod1=q.front();
q.pop();
for(int i=0;i<v[nod1.x].size();i++)
{
nod=v[nod1.x][i];
if (!v2[nod])
{
v1[nod]=v1[nod1.x]+1;
v2[nod]=1;
nod2.x=nod;
nod2.y=v1[nod];
q.push(nod2);
}
}
}
for(int i=1;i<=n;i++) printf("%d ",v1[i]);
}
int main()
{
f=fopen("bfs.in","r");
s=fopen("bfs.out","w");
fscanf(f,"%d %d %d",&n,&m,&p);
for(i=1;i<=m;i++)
{
int a,b;
fscanf(f,"%d %d",&a,&b);
v[a].push_back(b);
}
Solve();
return 0;
}