Pagini recente » Cod sursa (job #1914893) | Cod sursa (job #308155) | Cod sursa (job #2508834) | Cod sursa (job #2165627) | Cod sursa (job #2801603)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int NMAX = 100000;
vector <int> G[NMAX+5];
vector <int> viz;
vector <int> d;
ifstream in("bfs.in");
ofstream out("bfs.out");
void bfs(int nod, int cc)
{
int v;
queue<int>q;
q.push(nod);
viz[nod]=cc;
while(!q.empty())
{
nod=q.front();
for(int j=0;j<G[nod].size();j++)
{
v=G[nod][j];
if(viz[v]==0)
{
viz[v]=cc;
d[v]= d[nod] + 1;
q.push(v);
}
}
q.pop();
}
}
int main()
{
int n,m,u,v,i,s;
in>>n>>m>>s;
for(i=1;i<=m;i++)
{
in>>u>>v;
G[u].push_back(v);
}
viz.assign(n+1,0);
d.assign(n+1, -1);
bfs(s,1);
for(i=1;i<=n;i++)
{
out<<d[i]<<" ";
}
}