[BaekJoon] 백준 2660번 : 회장뽑기
Updated:
2660번 : 회장뽑기
 
회원의 점수는 가장 멀리 떨어져있는 회원과의 거리가 된다.
이 점수를 가지고 회장이 될 조건을 가진 회원들을 골라내면 된다.
최대 회원 수가 50명 이기 때문에 플로이드-워셜을 통해 거리를 구하면 된다.
def solution():
	for k in range(n):
		for i in range(n):
			for j in range(n):
				graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j])
				if i == j:
					graph[i][j] = 0
	score_list = [max(row) for row in graph]
	min_score = min(score_list)
	norminate = list()
	for i in range(len(score_list)):
		if score_list[i] == min_score:
			norminate.append(i + 1)
	print(min_score, len(norminate))
	print(*norminate)
	return
if __name__ == '__main__':
	n = int(input())
	graph = [[1_000_000] * n for _ in range(n)]
	while True:
		start, end = map(int, input().rsplit())
		if start == -1 and end == -1:
			break
		graph[start - 1][end - 1] = 1
		graph[end - 1][start - 1] = 1
	solution()
 
      
    
Leave a comment