질문 올리시기 전에 질문 게시판 공지사항을 한번 보시는게 좋을 듯 합니다.
어떤 의도로 vector안에 다시 list<pair>를 넣어놓으신 건지는 모르곘지만
인접 리스트를 사용할 때 vector 또는 list를 사용합니다.
1753번 - 최단경로
void Dijkstra(int start) {
priority_queue< distPair, vector, greater > q;
bitset<_MAX_E> visited;
m_MinTable[start] = 0;
q.push(distPair(0, start));
while (!q.empty()) {
int point = GetPoint(q.top());
int dist = GetDist(q.top());
q.pop();
for (auto &edge : m_AdjList[point]) {
int d = GetDist(edge);
int p = GetPoint(edge);
int newVal = d + dist;
if (newVal < m_MinTable[p]) {
m_MinTable[p] = newVal;
q.push(distPair(m_MinTable[p], p));
}
}
}
}
};
댓글을 작성하려면 로그인해야 합니다.
sjnam07 5년 전
아래 코드를 올리면 메모리초과가 나옵니다. Edge와 Vertex를 최대치로 한 여러 케이스를 돌려도 최대 28MB만 나오는데, 어디서 잘못된지 모르겠네요ㅜ
도움 부탁 드립니다.