[C++] 백준 11404번: 플로이드

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

🔗 문제

11404번: 플로이드

 

11404번: 플로이드

첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가

www.acmicpc.net

 

✍️ 풀이

 

제목부터 거저주는 플로이드 기초 문제 

 

모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오.

플로이드 와샬이다.

시작 도시와 도착 도시를 연결하는 노선은 하나가 아닐 수 있다.

그렇다면 A→B 중 가장 작은 비용 값을 저장하자.

 

💾  소스

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

const int INF = 1e9;

std::vector<std::vector<int>> adj;
int N, M;

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

	std::cin >> N >> M;

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

	for(int i=0; i<M; ++i)
	{
		std::cin >> a >> b >> c;

		if(adj[a][b] > c) // 같은 노선이면 가장 작은 비용만 저장
			adj[a][b] = c;
	}
}

int main()
{

	input();
	
	for (int i = 1; i <= N; ++i) // 중간 노드
	{
		for (int j = 1; j <= N; ++j)
		{
			for (int k = 1; k <= N; ++k)
			{
				if (i == j || k == i || k == j) continue;

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

	for (int i = 1; i <= N; ++i)
	{
		for (int j = 1; j <= N; ++j)
		{
			std::cout << (adj[i][j] == INF ? 0 : adj[i][j]) << ' ';
		}
		std::cout << '\\n';
	}

	return 0;
}
저작자표시 비영리 변경금지 (새창열림)
'problem solving/백준' 카테고리의 다른 글
  • [C++] 백준 21609번: 상어 중학교
  • [C++] 백준 23290번: 마법사 상어와 복제
  • [C++] 백준 1389번: 케빈 베이컨의 6단계 법칙
  • [C++] 백준 1956번: 운동
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)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
u1qns
[C++] 백준 11404번: 플로이드
상단으로

티스토리툴바