본문 바로가기
프로그래머스

가장 먼 노드

by paysmile 2019. 9. 23.
#include <string>
#include <vector>
#include <cstring>
#include <queue>

using namespace std;
const int MAX = 20001;
int graph[MAX][MAX];
int answer = 0;
int maxroute = 0;

int bfs(int sizes) {
	int visited[MAX];

	memset(visited, -1, sizeof(visited));
	queue<pair<int,int>> q;
	q.push(make_pair(1,0));
	visited[1] = 1;

	while (!q.empty()) {
		answer = q.size();
		int qsize = q.size();
		while (qsize > 0) {
			int current = q.front().first;
			int count = q.front().second;
			q.pop();

			for (int k = 0; k <= sizes; k++) {
				if (graph[current][k] == 1 && visited[k] == -1) {
					q.push(make_pair(k, count + 1));
					visited[k] = 1;
				}
			}
			qsize--;
		}
	}
	return answer;
}

int solution(int n, vector<vector<int>> edge) {

	memset(graph, -1, sizeof(graph));
	for (int i = 0; i < edge.size(); i++) 
		graph[edge[i][0]][edge[i][1]] = graph[edge[i][1]][edge[i][0]] = 1;

	bfs(n);

	return answer;
}

'프로그래머스' 카테고리의 다른 글

디스크 컨트롤러  (0) 2019.09.28
섬 연결하기  (0) 2019.09.25
예산  (0) 2019.09.23
정수 삼각형  (0) 2019.09.23
단속 카메라  (0) 2019.09.23