Pagini recente » Cod sursa (job #2064898) | Cod sursa (job #382291) | Cod sursa (job #595985) | Cod sursa (job #1898137) | Cod sursa (job #2028541)
#include <fstream>
#include <vector>
#include <queue>
#define in "bfs.in"
#define out "bfs.out"
#define N 100003
using namespace std;
ifstream fin(in);
ofstream fout(out);
int n,m,k,x,y;
vector<int> v[N];
queue<int> coada;
bool f[N];
int l[N];
void BFS()
{
f[k] = 1;
l[k] = 0;
coada.push(k);
vector<int>::iterator it;
while(!coada.empty())
{
int ln = l[coada.front()];
for(it = v[coada.front()].begin(); it != v[coada.front()].end(); ++it)
if(!f[*it])
{
const int nod = *it;
f[nod] = 1;
coada.push(nod);
l[nod] = ln + 1;
}
coada.pop();
}
}
int main()
{
fin>>n>>m>>k;
for(int i=1; i<=n; ++i)
l[i] = -1;
while(m--)
{
fin>>x>>y;
v[x].push_back(y);
}
BFS();
for(int i=1; i<=n; ++i)
fout<<l[i]<<" ";
fin.close(); fout.close();
return 0;
}