Pagini recente » Cod sursa (job #311115) | Cod sursa (job #460285) | Cod sursa (job #2980305) | Cod sursa (job #1473125) | Cod sursa (job #395383)
Cod sursa(job #395383)
#include <stdio.h>
#include <vector>
#include <queue>
#define NMAX 100100
using namespace std;
int N,M,S;
int D[NMAX],viz[NMAX];
vector <int> C[NMAX];
queue <int> Q;
void citire()
{
FILE *fin=fopen("bfs.in","r");
int i,x,y;
fscanf(fin,"%d %d %d",&N,&M,&S);
for(i=1;i<=M;i++)
{
fscanf(fin,"%d %d",&x,&y);
C[x].push_back(y);
}
Q.push(S);
viz[S]++;
}
void bfs()
{int i,x;
while(!Q.empty())
{ x=Q.front();
Q.pop();
for(i=0;i<C[x].size();i++)
{ if(viz[C[x][i]]==0)
{Q.push(C[x][i]);
D[C[x][i]]=D[x]+1;
viz[C[x][i]]++;
}
}
}
}
void afisare()
{
int i;
FILE *fout=fopen("bfs.out","w");
for(i=1;i<=N;i++)
{ if(D[i]==0 && i!=S) D[i]=-1;
fprintf(fout,"%d ",D[i]);
}
}
int main()
{
citire();
bfs();
afisare();
}