[C++] 백준 1389번: 케빈 베이컨의 6단계 법칙

2023. 7. 28. 03:29·problem solving/백준

🔗 문제

1389번: 케빈 베이컨의 6단계 법칙

 

1389번: 케빈 베이컨의 6단계 법칙

첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻

www.acmicpc.net

 

✍️ 풀이

 

무방향 그래프에서 모든 정점의 최단 경로를 구해야 한다?

 

 

플로이드 와샬 문제였다.

 

 

주의 사항

  • 무방향 그래프이므로 a→b면 b→a임을 잊지 말자.
  • 플로이드 와샬이 방문하지 않은 인접행렬의 초기값은 INF이지만 이 문제에서 자기 자신으로 가는 값은 0으로 설정하는 것에 유의해야 한다.
  • 출발노드가 중간노드나 목적지가 되는건 찾을 필요가 없다. 

 

💾  소스

#include <iostream>
#include <vector>
#include <cmath>

const int INF = 1e9;
std::vector<std::vector<int>> adj;
int V, E, min = INF;

void input()
{
	int a, b;

	std::cin >> V >> E;

	adj.resize(V + 1, std::vector<int>(V + 1, INF));
	
	for (int i = 1; i <= V; ++i)
		adj[i][i] = 0;

	while (E--)
	{
		std::cin >> a >> b;
		adj[a][b] = adj[b][a] = 1;
	}
}

int main()
{
 
	int answer = 0;

	input();
	
	std::vector<int> kb(V + 1, 0);

	for (int k = 1; k <= V; ++k)
	{
		for (int i = 1; i <= V; ++i)
		{
			for (int j = 1; j <= V; ++j)
			{
				if (i == j || i == k || j == k) continue;

				adj[i][j] = std::min(adj[i][j], adj[i][k] + adj[k][j]);
			}
		}
	}

	for (int i = 1; i <= V; ++i)
	{
		for (int j = 1; j <= V; ++j)
		{
			kb[i] += adj[i][j];
		}

		if (min > kb[i])
		{
			min = kb[i];
			answer = i;
		}
	}

	std::cout << answer;

	return 0;

}
저작자표시 비영리 변경금지 (새창열림)
'problem solving/백준' 카테고리의 다른 글
  • [C++] 백준 23290번: 마법사 상어와 복제
  • [C++] 백준 11404번: 플로이드
  • [C++] 백준 1956번: 운동
  • [C++] 백준 1949번: 우수 마을
u1qns
u1qns
http://github.com/u1qns
  • u1qns
    개발 블로그
    u1qns
  • 전체
    오늘
    어제
    • 분류 전체보기 (173)
      • 회고 (1)
      • programming (17)
        • 개념 정리 (6)
        • CI CD (1)
        • 트러블 슈팅 (0)
        • 환경설정 및 팁 (7)
      • problem solving (155)
        • 개념 정리 (3)
        • 백준 (129)
        • SWEA (15)
        • 프로그래머스 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    완전탐색
    삼성청년SW아카데미
    SSAFY
    C++
    그리디
    DFS
    cmath
    SWEA
    투포인터
    cpp
    POW
    SSAFY수료식
    구현
    HELLOSSAFY
    미해결
    백준
    되추적
    DP
    BFS
    boj
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
u1qns
[C++] 백준 1389번: 케빈 베이컨의 6단계 법칙
상단으로

티스토리툴바