Open devLupin opened 1 year ago
경로를 불러오는 방법
a->b
를 b
로 저장while(m--) {
cin >> a >> b >> c; // 정점 a에서 b로 가는 비용이 c
nxt[a][b] = b;
}
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) {
if(arr[i][j] > arr[i][k] + arr[k][j]) { // 최단 경로 및 경로 저장
arr[i][j] = arr[i][k] + arr[k][j];
nxt[i][j] = nxt[i][k];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(arr[i][j] == 0 || arr[i][j] == INF) { // i==j 이거나 길이 없는 경우
cout << "0\n";
continue;
}
vector<int> path;
int cur = i;
while(cur != j) {
path.push_back(cur);
cur = nxt[cur][j];
}
path.push_back(j);
}
}
i
정점에서j
정점까지의 모든 최단 경로를 찾는 문제