Pagini recente » Cod sursa (job #389853) | Cod sursa (job #2902443) | Cod sursa (job #2568085) | Cod sursa (job #2022283) | Cod sursa (job #1007788)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
#define IN "bfs.in"
#define OUT "bfs.out"
#define NMAX 100010
int n,m;
int viz[NMAX];
int distanta[NMAX];
vector<int> matrice[NMAX];
queue<int> q;
int main()
{
FILE * fin=fopen(IN,"r");
FILE * fout=fopen(OUT,"w");
int i,x,y,element,z,s;
fscanf(fin,"%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d",&x,&y);
matrice[x].push_back(y);
}
q.push(s);
viz[s]=1;
while(!q.empty())
{
element=q.front();
q.pop();
for(i=0;i<matrice[element].size();i++)
{
z=matrice[element][i];
if(viz[z]!=1)
{
viz[z]=1;
distanta[z]=distanta[element]+1;
q.push(z);
}
}
}
for(i=1;i<s;i++)
{
if(distanta[i]==0)
fprintf(fout,"-1 ");
else
fprintf(fout,"%d ",distanta[i]);
}
fprintf(fout,"0");
for(i=s+1;i<=n;i++)
{
if(distanta[i]==0)
fprintf(fout," -1");
else
fprintf(fout," %d",distanta[i]);
}
fprintf(fout,"\n");
fclose(fin);
fclose(fout);
return 0;
}