Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 다이나믹 프로그래밍
- uclidean algorithm
- GJK
- ubuntu
- 백준
- 외적
- C
- PS
- Expanding Polytope Algorithm
- Unity
- 수학
- Doubly Connected Edge List
- 보로노이다이어그램
- 알고리즘
- 충돌 알고리즘
- dp
- 우분투
- AABB
- 내적
- 유니티
- 리눅스
- 벡터
- SOH
- 문제풀이
- c#
- linux
- Vector
- Graham Scan
- 분할축 이론
- C++
Archives
- Today
- Total
마이 플밍 블로그
[C++]백준 11780 - 플로이드2 본문
풀이
플로이드-워셜 알고리즘에서 경로추적을 추가하면 되는 문제다.
문제는 쉬웠으나 못가는 경우 0을 출력하는걸 깜빡해서 여러번 틀렸다.
코드
#include <iostream>
#include <vector>
using namespace std;
#define CITY 105
#define INF 200000000
int map[CITY][CITY];
int nextNode[CITY][CITY];
int n, m;
void FloydWarshall(){
for(int i = 1; i <= n; i++){
for(int k = 1; k <= n; k++){
for(int j = 1; j <= n; j++){
if(map[k][j] > map[k][i] + map[i][j]){
map[k][j] = map[k][i] + map[i][j];
nextNode[k][j] = nextNode[k][i];
}
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> n >> m;
for(int i = 0;i <= n; i++){
for(int k = 0;k <= n; k++){
map[i][k] = INF;
nextNode[i][k] = k;
}
}
for(int i = 0; i < m; i++){
int p1, p2, w;
cin >> p1 >> p2 >> w;
if(map[p1][p2] > w)
map[p1][p2] = w;
}
FloydWarshall();
for(int k = 1; k <= n; k++){
for(int j = 1; j <= n; j++){
if(k != j && map[k][j] != INF)
cout << map[k][j] << " ";
else{
cout << "0 ";
}
}
cout << "\n";
}
for(int p1 = 1; p1 <= n; p1++){
for(int p2 = 1; p2 <= n; p2++){
if(map[p1][p2] == INF || p1 == p2){
cout << "0\n";
}
else{
int u = p1, v = p2;
vector<int> path;
while(true){
u = nextNode[u][v];
path.push_back(u);
if(u == v)
break;
}
cout << path.size()+1 << " " << p1 << " ";
for(int i =0;i<path.size();i++){
cout << path[i] << " ";
}
cout << "\n";
}
}
}
return 0;
}
'문제풀이 > 백준' 카테고리의 다른 글
[C++] 백준 5567 - 결혼식 (0) | 2023.02.26 |
---|---|
[C++] 백준 1937 - 욕심쟁이 판다 (0) | 2023.02.26 |
[C++]백준 1051 - 숫자 정사각형 (0) | 2022.03.15 |
[C++]백준 1708 - 볼록 껍질 (0) | 2022.03.15 |
[C++]백준 14226 - 이모티콘 (0) | 2022.01.11 |