4. 실제 데이터를 저장할 graph 구조체를 정의합니다.

    struct graph
    {
        std::vector<std::vector<std::pair<int, int>>> data;
    

      5. 인접 리스트를 사용하는 graph 구조체의 생성자가 어떻게 달라지는지 확인하세요.

    graph(int n)
    {
        data = std::vector<std::vector<std::pair<int, int>>>(n, std::vector<std::pair<int, int>>());
    }
    

    여기서도 2차원 벡터를 사용하여 데이터를 저장하지만, 처음에는 에지가 전혀 없으므로 모든 행은 비어 있는 형태로 초기화됩니다.

      6. addEdge() 함수를 작성합니다.

    void addEdge(const city c1, const city c2, int dis)
    {
        std::cout << "에지 추가: " << c1 << "-" << c2 << "=" << dis << std::endl;
    
        auto n1 = static_cast<int>(c1);
        auto n2 = static_cast<int>(c2);
        data[n1].push_back({n2, dis});
        data[n2].push_back({n1, dis});
    }
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.