Pagini recente » Cod sursa (job #259863) | Cod sursa (job #1162273) | Cod sursa (job #2387360) | Cod sursa (job #705978) | Cod sursa (job #2729892)
#include <bits/stdc++.h>
using namespace std;
int n,m,s,sol[100003];
vector<int> a[100003];
stack<int>q;
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;
unsigned int k;
for(i=1;i<=n;++i)
sol[i]=-1;
sol[s]=0;
q.push(s);
while(!q.empty())
{
i=q.top();
q.pop();
for(k=0;k<a[i].size();++k)
{
j=a[i][k];
if(sol[j]==-1 || sol[j] > sol[i] + 1)
{
sol[j]=1+sol[i];
q.push(j);
}
}
}
}
int main()
{
Citire();
BFS();
Afisare();
return 0;
}