Pagini recente » Cod sursa (job #1643998) | Cod sursa (job #2609921) | Cod sursa (job #307307) | Cod sursa (job #3151908) | Cod sursa (job #1261535)
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
FILE *f=fopen("bfs.in","r");
FILE *g=fopen("bfs.out","w");
using namespace std;
vector <int> v[100010];
int cost[100010],s[100010],w[100010],n,m,nod,i,x,y;
struct nod {int info; nod *urm;};
void bfs(int nod)
{
int i,j,l;
memset(cost,-1,sizeof(cost));
l=1;
cost[nod]=0;
s[l]=nod;
for (i=1;i<=l;i++)
for (j=0;j<w[s[i]];j++)
if(cost[v[s[i]][j]]==-1)
{
s[++l]=v[s[i]][j];
cost[s[l]]=cost[s[i]]+1;
}
}
/*void adauga(nod *&ultim,int n)
{
nod *p=new nod;
p->info=n;
p->urm=NULL;
ultim->urm=p;
ultim=p;
}
*/
int main()
{
fscanf(f,"%d%d%d",&n,&m,&nod);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&x,&y);
v[x].push_back(y);
}
for(i=1;i<=n;i++)
w[i]=v[i].size();
bfs(nod);
for(i=1;i<=n;i++)
fprintf(g,"%d ",cost[i]);
w[i]=v[i].size();
fclose(g);
return 0;
}