Pagini recente » Cod sursa (job #248914) | Cod sursa (job #749080) | Cod sursa (job #1666814) | Cod sursa (job #1010334) | Cod sursa (job #2261109)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int seen[200000], d[200000], q[200000];
vector<int> v[200000];
int main()
{
int n, m, a, b, i, st, dr, s, nod;
in>>n>>m>>s;
for(i = 0; i<m;i++)
{
in>>a>>b;
if(a!=b)
v[a].push_back(b);
}
for(int i = 1; i<=n; i++)
d[i]=-1;
q[1]=s;
st=1;
dr=2;
d[s]=0;
seen[s]=-1;
while(st<dr)
{
nod = q[st];
seen[nod]=-1;
for(i=0; i<v[nod].size(); i++)
if(seen[v[nod][i]]==0)
{
d[v[nod][i]]=d[nod]+1;
q[dr]=v[nod][i];
dr++;
seen[v[nod][i]]=-1;
}
st++;
}
for(i = 1; i<=n; i++)
{
out<<d[i]<<" ";
}
return 0;
}