더북(TheBook)

  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});
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.