Cod sursa(job #3001748)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 13 martie 2023 21:22:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <cstdio>
#include <cmath>
#include <climits>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <bitset>
#include <map>
#include <cstring>
#include <algorithm>

#define NMAX 100003

using namespace std;

FILE* fin, * fout;

int n, m, start;
vector<int>graf[NMAX];
int dMin[NMAX];

void bfs()
{
	queue<int>q;
	q.push(start);
	dMin[start] = 0;
	while (!q.empty())
	{
		int nod = q.front();
		q.pop();
		for (int i = 0; i < graf[nod].size(); i++)
		{
			int nd = graf[nod][i];
			if (dMin[nd] == -1)
			{
				dMin[nd] = dMin[nod] + 1;
				q.push(nd);
			}
		}
	}
}

int main()
{
	fin = fopen("bfs.in", "r");
	fout = fopen("bfs.out", "w");
	
	fscanf(fin, "%d %d %d", &n, &m,&start);
	for (int i = 1; i <= m; i++)
	{
		int x, y;
		fscanf(fin, "%d %d", &x, &y);
		graf[x].push_back(y);
	}
	for (int i = 1; i <= n; i++)
	{
		dMin[i] = -1;
	}
	bfs();
	int nrc = 0;
	for (int i = 1; i <= n; i++)
	{
		fprintf(fout, "%d ", dMin[i]);
	}
	return 0;
}