Pagini recente » Cod sursa (job #2402440) | Cod sursa (job #94449) | Cod sursa (job #1258560) | Cod sursa (job #870842) | Cod sursa (job #1711089)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s,niv[100001];
vector <int> L[100001];
queue <int> Q;
int main()
{ f>>n>>m>>s;
for(int u,v,i=1;i<=m;i++)
{ f>>u>>v;
L[u].push_back(v);
}
Q.push(s);
niv[s]=1;
while(!Q.empty())
{ int t=Q.front(); Q.pop();
vector <int> :: iterator it=L[t].begin(),sf=L[t].end();
for(;it!=sf;it++)
if(!niv[*it]) {Q.push(*it); niv[*it]=niv[t]+1;}
}
for(int i=1;i<=n;i++)
if(niv[i]) g<<niv[i]-1<<' '; else g<<"-1 ";
g.close(); return 0;
}