Pagini recente » Cod sursa (job #2894389) | Cod sursa (job #858835) | Cod sursa (job #2444325) | Cod sursa (job #947338) | Cod sursa (job #1492752)
#include <vector>
#include <fstream>
using namespace std;
int n,m,s,sol[100003],q[1000005],b[100003];
vector<int> a[100003];
inline void Citire()
{
int i,x,y;
ifstream fin("bfs.in");
fin>>n>>m>>s;
for(i=1;i<=m;++i)
{
fin>>x>>y;
if(x!=y)
a[x].push_back(y);
}
fin.close();
}
inline void Afisare()
{
int i;
ofstream fout("bfs.out");
for(i=1;i<=n;++i)
fout<<sol[i]<<" ";
fout<<"\n";
fout.close();
}
inline void BFS()
{
int j,i,pr,ul;
unsigned int k;
for(i=1;i<=n;++i)
sol[i]=-1;
sol[s]=0;
pr=0;
ul=-1;
q[++ul]=s;
while(pr<=ul)
{
i=q[pr];
pr++;
for(k=0;k<a[i].size();++k)
{
j=a[i][k];
if(sol[j]==-1)
{
sol[j]=1+sol[i];
q[++ul]=j;
}
}
}
}
int main()
{
Citire();
BFS();
Afisare();
return 0;
}