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});
}