[C++] 백준 1956번: 운동

2023. 7. 28. 02:42·problem solving/백준

🔗 문제

1956번: 운동

 

1956번: 운동

첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의

www.acmicpc.net

 

✍️ 풀이

 

방향 그래프로 표현되는 경로에, 두 정점의 최단 거리를 구한다?

 

플루이드 와샬을 이용해서 푼다.

  • 그래프가 주어졌을 때 두 정점의 최단 거리를 구할 때 사용한다.
  • 그래프를 인접 행렬로 표현하며, 아직 경로를 찾지 못한 곳은 INF이다. 

 

플루이드 와샬의 핵심은 a→b로 이동하고자 할때 중간 노드를 고려한다는 점이다. 

O(V^3)의 시간이 걸리지만 v가 400으로 작은 축에 속해서 문제를 풀 수 있다.  

 

💾  소스

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

const int INF = 1e9;

std::vector<std::vector<int>> adj;
int V, E, answer = INF;

void input()
{
	int a, b, cost;

	std::cin >> V >> E;

	adj.resize(V + 1, std::vector<int>(V + 1, INF));
	
	while (E--)
	{
		std::cin >> a >> b >> cost;
		adj[a][b] = cost;
	}
}

int main()
{
	input();

  //플루이드 워셜
	for (int k = 1; k <= V; ++k)
		for (int i = 1; i <= V; ++i)
			for (int j = 1; j <= V; ++j)
				adj[i][j] = std::min(adj[i][j], adj[i][k] + adj[k][j]);

	for (int i = 1; i <= V; ++i) // 원점으로 돌아오니까 여기서 정답 찾아야함
		answer = (answer < adj[i][i] ? answer : adj[i][i]);

	std::cout << (answer == INF ? -1 : answer);
    
    return 0;
}
저작자표시 비영리 변경금지 (새창열림)
'problem solving/백준' 카테고리의 다른 글
  • [C++] 백준 11404번: 플로이드
  • [C++] 백준 1389번: 케빈 베이컨의 6단계 법칙
  • [C++] 백준 1949번: 우수 마을
  • [C++] 백준 1937번: 욕심쟁이 판다
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)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
u1qns
[C++] 백준 1956번: 운동
상단으로

티스토리툴바