본문 바로가기
코딩/cpp

[백준] 1389번

by 적막한숲 2025. 10. 3.

알고리즘 및 자료구조 복습이 되는 문제들이여서 좋았다.

floyd이거 까먹고 있었는데 상기 되는 계기가 되었다

O(n*n*m)

m은 bfs의 갯수다, 즉 노드의 갯수 근데 모든 연결점과 연결 되어 있기 때문에, 결론의 O(n^3)일 것이다.

#include <iostream>
#include <vector>
#include <queue>
#include <climits>


int main() {
    int n, m;
    std::cin >> n >> m;
    std::vector graph(n, std::vector<int>(n, 0));
    std::vector<int> visited(n, -1);
    std::queue<int> q;

    for (int i = 0; i<m; i++) {
        int _x, _y;
        std::cin >> _x >> _y;
        graph[_x-1][_y-1] = 1;
        graph[_y-1][_x-1] = 1;
    }

    int distance = INT_MAX;
    int index = 0;
    for (int i = 0; i<n; i++) {
        std::vector<int> _visited = visited;
        q.push(i);
        _visited[i] = 0;
        int _dist = 0;
        while (!q.empty()) {
            int _index = q.front(); q.pop();
            _dist += _visited[_index];
            for (int j = 0; j < n; j++) {
                if (graph[_index][j] && _visited[j] == -1) {
                    _visited[j] = _visited[_index]+1;
                    q.push(j);
                }
            }
        }

        if (distance > _dist) {
            distance = _dist;
            index = i+1;
        }
    }

    std::cout << index << std::endl;

    return 0;
}

'코딩 > cpp' 카테고리의 다른 글

[백준] 11286번  (0) 2025.10.06
[백준] 5525번  (0) 2025.10.05
[TWC 4.5Sota] Overloading vs. Overriding  (0) 2025.10.03
c++ 공부 track  (0) 2025.10.03
[TIPS] Overloading Function (2)  (0) 2025.10.03