Pagini recente » Cod sursa (job #1210410) | Cod sursa (job #1608471) | Cod sursa (job #2782281) | Cod sursa (job #2870235) | Cod sursa (job #2782878)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int varfuri[100002];
int n, m, x;
bool vizat[100002];
vector <int> graphs[100002];
queue <int> coada;
void bfs(int vf)
{
varfuri[vf] = 0;
vizat[vf] = true;
int lung, vertex, i, k;
coada.push(vf);
while (!coada.empty())
{
vertex = coada.front();
lung = graphs[vertex].size();
vizat[vertex] = true;
for (i = 0; i < lung; i++)
{
k = graphs[vertex][i];
if (!vizat[k])
{
varfuri[k] = varfuri[vertex] + 1;
coada.push(k);
vizat[k] = true;
}
}
coada.pop();
}
}
int main()
{
int a, b, i;
fin >> n >> m >> x;
for (i = 0; i < m; i++)
{
fin >> a >> b;
graphs[a].push_back(b);
}
bfs(x);
for(i = 1; i <= n; i++)
{
if(varfuri[i] == 0 && i != x)
fout << "-1 ";
else
fout << varfuri[i] << ' ';
}
return 0;
}
/*for(i = 1; i <= n; i++)
sort(graphs[i].begin(), graphs[i].end());*/