Pagini recente » Cod sursa (job #2482930) | Cod sursa (job #2071125) | Cod sursa (job #2896559) | Cod sursa (job #1208173) | Cod sursa (job #2043185)
#include <fstream>
#include<set>
#include<queue>
#include<iostream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int cost[100003],n,m,s;
bool viz[100003];
set<int> v[100003];
set<int>::iterator it;
queue<int>c;
void afis()
{
int ii; cin>>ii;
for(ii=1;ii<=n;ii++) cout<<cost[ii]<<' ';
cout<<'\n';
}
void bfs()
{
c.push(s);
cost[s]=0;
viz[s]=1;
int p,u,xx;
p=u=1;
while(!c.empty())
{
// afis();
xx=c.front();
if(v[xx].size()>0)
{
for(it=v[xx].begin();it!=v[xx].end();++it)
if(!viz[*it])
{
int aux=*it;
c.push(aux);
cost[aux]=cost[xx]+1;
viz[aux]=1;
}
}
c.pop();
}
}
int main()
{
int i,x,y;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
v[x].insert(y);
//v[y].insert(x);
}
bfs();
for(i=1;i<=n;i++) if(i!=s && cost[i]==0) g<<-1<<' ';
else
g<<cost[i]<<' ';
g<<'\n';
f.close();
g.close();
return 0;
}