Pagini recente » Cod sursa (job #2341764) | Cod sursa (job #743113) | Cod sursa (job #2424927) | Cod sursa (job #859898) | Cod sursa (job #744281)
Cod sursa(job #744281)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
bool visited[100000];
vector<int> d(100000);
int main()
{
int N, M, S;
ifstream in("bfs.in");
in >> N >> M >> S;
vector< vector<int> > graph(N);
for(int i = 0, a, b; i < M; ++i)
{
in >> a >> b;
graph[a - 1].push_back(b - 1);
}
in.close();
queue<int> queue;
queue.push(S - 1);
while(!queue.empty())
{
int node = queue.back();
queue.pop();
if(visited[node])
continue;
visited[node] = true;
for(int i = 0; i < graph[node].size(); ++i)
{
if(!visited[graph[node][i]])
{
d[graph[node][i]] = d[node] + 1;
queue.push(graph[node][i]);
}
}
}
ofstream out("bfs.out");
for(int i = 0; i < N; ++i)
out << (((d[i] == 0) && (i != S - 1)) ? -1 : d[i]) << " ";
out.close();
return 0;
}