Pagini recente » Cod sursa (job #174076) | Cod sursa (job #2709599) | Cod sursa (job #889170) | Cod sursa (job #174650) | Cod sursa (job #744562)
Cod sursa(job #744562)
#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> q;
q.push(S - 1);
visited[S - 1] = true;
while(!q.empty())
{
int node = q.front();
q.pop();
for(int i = 0; i < graph[node].size(); ++i)
{
if(!visited[graph[node][i]])
{
d[graph[node][i]] = d[node] + 1;
q.push(graph[node][i]);
visited[graph[node][i]] = true;
}
}
}
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;
}