알고리즘 문제풀기/인프런 강의 정답

70. 그래프 최단거리 (BFS: Breadth First Search)

코다람쥐 2022. 5. 19. 12:30

나의정답.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>

using namespace std;

int main(int argc, char** argv) {
	//freopen("input.txt", "rt", stdin);
	vector<int> map[30];
	queue<int> q;
	int ch[30] = { 0 }, dis[30], n, m, a, b, x;
	scanf("%d %d", &n, &m);

	for (int i = 0; i < m; i++) {
		scanf("%d %d", &a, &b);
		map[a].push_back(b);
	}

	q.push(1);
	ch[1] = 1;
	dis[1] = 0;

	while (!q.empty()) {
		x = q.front();
		q.pop();

		for (int i = 0; i < map[x].size(); i++) {
			if (ch[map[x][i]] == 0) {
				ch[map[x][i]] = 1;
				q.push(map[x][i]);
				dis[map[x][i]] = dis[x] + 1;
			}
		}
	}

	for (int i = 1; i <= n; i++) {
		printf("%d : %d\n", i, dis[i]);
	}

}