Pagini recente » Cod sursa (job #2664689) | Cod sursa (job #2167721) | Cod sursa (job #1108422) | Cod sursa (job #937919) | Cod sursa (job #1048028)
#include <fstream>
#include <bitset>
#include <queue>
#include <list>
using namespace std;
list<int> graf[100005];
bitset<100005> viz;
queue<int> coada;
int d[100005];
int s;
inline void bfs()
{
viz[s]=1;
coada.push(s);
d[s]=0;
list<int>::iterator it;
int y;
while(!coada.empty())
{
y=coada.front();
coada.pop();
for(it=graf[y].begin();it!=graf[y].end();it++)
if(!viz[*it])
{
viz[*it]=1;
d[*it]=d[y]+1;
coada.push(*it);
}
}
}
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n=0,m=0,i,x,y;
cin>>n>>m>>s;
for(i=0;i<m;i++)
{
cin>>x>>y;
graf[x].push_back(y);
}
bfs();
for(i=1;i<=n;i++)
if(!viz[i])
cout<<"-1 ";
else
cout<<d[i]<<' ';
cout<<'\n';
cin.close();
cout.close();
return 0;
}