Pagini recente » Cod sursa (job #2398782) | Cod sursa (job #2784934) | Cod sursa (job #3187265) | Cod sursa (job #460641) | Cod sursa (job #1165275)
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
FILE* in;
FILE* out;
const int Q=100001;
int val[Q];
std::vector<int> f[Q];
int nrnod,nrarc,rad;
std::queue<int> cod;
void bfs()
{
cod.push(rad);
val[rad]=0;
int act,nrver=1;
while(!cod.empty() && nrver!=nrnod)
{
act=cod.front();
for(int i=0; i<f[act].size(); i++)
{
if(val[f[act][i]]==-1)
{
val[f[act][i]]=val[act]+1;
cod.push(f[act][i]);
nrver++;
}
}
cod.pop();
}
}
int main()
{
in=fopen("bfs.in","r");
out=fopen("bfs.out","w");
memset(val,-1,sizeof val);
fscanf(in,"%d%d%d",&nrnod,&nrarc,&rad);
int a,b;
for(int i=1; i<=nrarc; i++)
{
fscanf(in,"%d%d",&a,&b);
f[a].push_back(b);
}
bfs();
for(int i=1; i<=nrnod; i++)
fprintf(out,"%d ",val[i]);
fclose(in);
fclose(out);
return 0;
}