Pagini recente » Cod sursa (job #283389) | Cod sursa (job #1424487) | Cod sursa (job #2220462) | Cod sursa (job #2670964) | Cod sursa (job #2147379)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> v[100005];
queue <int> c;
int n,m,x,y,s,cost[100005];
bool viz[100005];
int main()
{
fin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
v[x].push_back(y);
}
for(int i=1;i<=n;i++)
cost[i]=-1;
cost[s]=0;
c.push(s);
int nod,nod_nou;
while(c.size())
{
nod=c.front();
viz[nod]=1;
for(vector<int>::iterator it=v[nod].begin();it!=v[nod].end();it++)
{
nod_nou=*it;
if(!viz[nod_nou] && cost[nod]==-1)
{
c.push(nod_nou);
cost[nod_nou]=cost[nod]+1;
}
}
c.pop();
}
for(int i=1;i<=n;i++)
fout<<cost[i]<<' ';
fin.close();
fout.close();
return 0;
}