혜랑's STORY

[BOJ_C++] 9372번 : 상근이의 여행 본문

무지성 공부방/알고리즘 해결

[BOJ_C++] 9372번 : 상근이의 여행

hyerang0125 2021. 8. 6. 15:01

code

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cstring>
#include <stack>
#include <vector>
#include <cmath>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int t; cin >> t;
    int n, m, a, b;
    for (int tc = 0; tc < t; tc++) {
        cin >> n >> m;
        for (int i = 0; i < m; i++)
            cin >> a >> b;
        printf("%d\n", n - 1);
    }

    return 0;
}
  • 최소 비용 신장 트리(MST)를 아는지에 대한 문제인 것 같다.
  • 국가의 수가 있고 이후 비행 스케쥴이 주어지면 최대한 적은 종류의 비행기를 타는 것이다.
  • 이때 최소 비용 신장 트리를 사용하면 모든 정점은 포함하되 최소로 연결되도록 하기 때문에 최대한 적은 비행기를 탈 수 있고, 최소 연결의 조건으로 정점의 수(국가의 수)가 n일때 간선 수는 언제나 n-1이다.
  • 즉, 차례로 입력을 받은 뒤 n-1 값을 출력해주면 되는 문제이다.

결과