Pagini recente » Cod sursa (job #1220438) | Cod sursa (job #227460) | Cod sursa (job #3245330) | Cod sursa (job #691388) | Cod sursa (job #2674779)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
vector<int> mu[100005];
queue<int> q;
bool vis[100005];
int dist[100005];
void bfs(int start)
{
q.push(start);
vis[start] = 1;
while(!q.empty())
{
int aux = q.front();
//out<<aux<<" : ";
for(int i = 0; i < mu[aux].size(); i++)
{
//out<<mu[aux][i]<<" , ";
if(vis[mu[aux][i]] == 0)
{
q.push(mu[aux][i]);
vis[mu[aux][i]] = 1;
dist[mu[aux][i]] = dist[aux] + 1;
}
}
//out<<'\n';
q.pop();
}
}
void c_a(int m, bool a)
{
for(int j = 1 ; j <= m; j++)
{
if(a)
{
out << j <<" : ";
for (int i = 0; i < mu[j].size(); i++)
out << mu[j][i] << " ";
out << '\n';
}
else
{
int x, y;
in >> x >> y;
mu[x].push_back(y);
//mu[y].push_back(x);
}
}
}
int main()
{
int n, m, i, x;
in >> n >> m >> x;
c_a(m, 0);
// c_a(m, 1);
// return 0;
bfs(x);
for(i = 1; i <= n; i++)
{
if(dist[i] <= 0)
{
if(i == x)
out << 0;
else
out << -1;
}
else
out << dist[i];
out << " ";
}
return 0;
}