Pagini recente » Cod sursa (job #1765321) | Cod sursa (job #2086589) | Cod sursa (job #1524078) | Cod sursa (job #2590936) | Cod sursa (job #2669247)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,inc,x,y,a,b,i,val[100001];
vector <vector<int>> mat;
queue <int> q;
void BFS()
{
q.push(inc);
val[inc] = 1;
while(!q.empty())
{
a = q.front();
q.pop();
for(i = 0; i < mat[a].size(); ++ i)
{
b = mat[a][i];
if(!val[b])
{
val[b] = val[a] + 1;
q.push(b);
}
}
}
}
int main()
{
f >> n >> m >> inc;
mat.resize(n + 1);
while(m --)
{
f >> x >> y;
mat[x].push_back(y);
}
BFS();
for(i = 1; i <= n; ++ i, g << ' ')
if(val[i] == 1)
g << 0;
else if(!val[i])
g << -1;
else
g << val[i] - 1;
return 0;
}