문제
파티장에서 파티장으로 직접적으로 연결된 도로를 통해 이동하는 시간이 있을 때, 손님이 시간내에 다른 파티장에 도착할 수 있으면 “Enjoy other party”를, 시간내에 도착할 수 없으면 "Stay here”를 출력
생각할 것
모든 파티장에서 모든파티장의 최단 경로를 알아야하고, 경유하며 방문하므로 플로이드 워셜 사용하기
코드
#include <iostream>
#include <vector>
#define INF 1e9
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, M;
cin >> N >> M;
vector<vector<int>> adj(N + 1, vector<int>(N + 1, INF));
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
cin >> adj[i][j];
}
}
for (int i = 1; i <= N; i++) adj[i][i] = 0;
for (int k = 1; k <= N; k++) {
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
adj[i][j] = min(adj[i][j], adj[i][k] + adj[k][j]);
}
}
}
int A, B, C;
for (int i = 0; i < M; i++) {
cin >> A >> B >> C;
if (adj[A][B] <= C) cout << "Enjoy other party" << endl;
else cout << "Stay here" << endl;
}
return 0;
}
반응형
'Problem solving > BOJ' 카테고리의 다른 글
[BOJ] 14938. 서강그라운드 (C++) (0) | 2023.07.25 |
---|---|
[BOJ] 13549. 숨바꼭질 3 (C++) (0) | 2023.07.25 |
[BOJ] 2224. 명제 증명 (C++) (0) | 2023.07.25 |
[BOJ] 11403. 경로 찾기 (C++) (0) | 2023.07.25 |