11493번 - 동전 교환
양방향으로 하려다가 5번 연속 틀리고... 걍 정점 분할로 풀었는데요..ㅠㅠ
단방향 그래프의 경우 dist는 그래프 입력할 때,
d[u][v]=dist;
d[v][u]=-dist
이렇게 전처리를 해두고 mcmf돌리면 잘 돌아가는데요
양방향 그래프를 mcmf돌릴 때는 dist처리를 어떻게 해야하나요..?
유량 같은 경우는 source -> sink를 찾고나서
f[prev[i]][i]+=flow
f[i][prev[i]]-=flow
이렇게 처리를 하면 되는데....
dist처리는 진짜 모르겠습니다 ㅠㅠ
인접행렬이 아닌 vector를 사용하는 구현에 익숙해 지시는 게 좋을 것 같습니다
각 간선의 정보를 저장하는 Edge 구조체를 만들고
vector<Edge*> graph[1000] 이런 구현을 말씀하시는 건가요...?
진짜 감사하고 또 감사합니다 ㅠㅠㅠ
조언덕에 MCMF, 유량 문제풀면서 들었던 의문점도 해결되고
많은 문제도 풀게되었습니다...... ^_^
댓글을 작성하려면 로그인해야 합니다.
97mjh1012 3년 전
양방향으로 하려다가 5번 연속 틀리고... 걍 정점 분할로 풀었는데요..ㅠㅠ
단방향 그래프의 경우 dist는 그래프 입력할 때,
d[u][v]=dist;
d[v][u]=-dist
이렇게 전처리를 해두고 mcmf돌리면 잘 돌아가는데요
양방향 그래프를 mcmf돌릴 때는 dist처리를 어떻게 해야하나요..?
유량 같은 경우는 source -> sink를 찾고나서
f[prev[i]][i]+=flow
f[i][prev[i]]-=flow
이렇게 처리를 하면 되는데....
dist처리는 진짜 모르겠습니다 ㅠㅠ