Pagini recente » Cod sursa (job #1981179) | Cod sursa (job #2233637) | Cod sursa (job #2407738) | Cod sursa (job #641107) | Cod sursa (job #837839)
Cod sursa(job #837839)
#include <fstream>
#include <stdio.h>
#include <cstdlib>
#include <vector>
#define MAX_SIZE 100001
using namespace std;
vector <int> graf[MAX_SIZE];
int cost[MAX_SIZE];
int coada[MAX_SIZE];
int len = 0;
int N , M , S;
void BFS(int nod)
{
for (int i = 0; i<= MAX_SIZE;i++)
{
cost[i] = -1;
}
len++;
coada[len] = nod;
cost[nod] = 0;
int i = 1;
while (i <= len)
{
for (int j = 0;j < graf[coada[i]].size();j++)
{
if ( cost[graf[coada[i]][j]] == -1)
{
len++;
coada[len] = graf[coada[i]][j];
cost[graf[coada[i]][j]] = cost[coada[i]] + 1;
}
}
i++;
}
}
int main()
{
ifstream input("bfs.in");
ofstream output("bfs.out");
input >> N >> M >> S;
for (int i = 0;i < M;i++)
{
int x , y;
input >> x >> y;
graf[x].push_back(y);
}
BFS(S);
for (int i = 1;i<=N;i++)
{
output << cost[i] << " ";
}
input.close();
output.close();
return 0;
}