티스토리 뷰
#include <stdio.h>
int main(void)
{
int INF = 10000000;
int n, t;
//input
scanf("%d %d", &n, &t);
int d[n][3]; //정보를 받을 배열
int a[n][n]; //최소거리를 저장할 배열
for(int i = 0; i<n; i++) {
int e, b, c;
scanf("%d %d %d", &e, &b, &c);
d[i][0] = e;
d[i][1] = b;
d[i][2] = c;
}
//거리 초기화
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) a[i][j] = INF;
a[i][i] = 0;
}
//거리 초기값 넣기
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) {
if(a[i][j] < INF) continue;
int x = d[i][1] - d[j][1];
int y = d[i][2] - d[j][2];
if(x<0) x*=-1;
if(y<0) y*=-1;
int sum = x+y;
if(d[i][0] == d[j][0] && d[i][0] == 1 && sum > t) sum = t;
a[i][j] = a[j][i] = sum;
}
}
//floyd warshall
for(int k = 0; k<n; k++) {
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) {
if(a[i][k] + a[k][j] < a[i][j])
a[i][j] = a[i][k] + a[k][j];
}
}
}
//output
int loop = 0;
scanf("%d", &loop);
while(loop--) {
int e, b;
scanf("%d %d", &e, &b);
printf("%d\n", a[e-1][b-1]);
}
}
풀이 : Floyd Warshall
0. 정보를 받을 배열과, 최단거리를 저장할 배열을 만든다.
1. 텔레포트 가능여부와, 도시의 위치 x, y을 입력 받는다.
2. 1에서 입력 받은 걸로 특정 도시에서 다른 도시로 가는 것을 모두 구한다.
2.1) x의 값과 y의 값을 합친 것과, 텔레포트가 가능 할 시, 텔레포트가 걸리는 시간과 비교해서 최솟값을 구한다.
3. floyd warshall
4. 출력
https://www.acmicpc.net/problem/16958
16958번: 텔레포트
2차원 평면 위에 N개의 도시가 있다. 일부 도시는 특별한 도시이다. (r1, c1)에 있는 도시에서 (r2, c2)에 있는 도시로 가는 이동 시간은 |r1 - r2| + |c1 - c2|와 같다. 만약, 두 도시가 특별한 도시라면, 텔
www.acmicpc.net
'c언어 > BAEKJOON' 카테고리의 다른 글
c언어 2458번 키 순서 (백준) (0) | 2023.01.02 |
---|---|
c언어 17182번 우주 탐사선 (백준) (0) | 2023.01.02 |
c언어 15723번 n단 논법 (백준) (0) | 2022.12.31 |
c언어 3363번 동전 (백준) (0) | 2022.12.20 |
c언어 26124번 조명 배치 (백준) (0) | 2022.12.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 그리디
- C언어
- 백준
- 오프라인 쿼리
- 스택
- 덱
- DP
- 플로이드
- BFS
- find
- Segment Tree
- PASCAL
- union
- 기하학
- 누적합
- 누적 합
- 1835
- C++
- 정렬
- XOR
- 브루트포스
- Lazy Propagation
- 1835번
- 그래프
- Krustal
- 최소 스패닝 트리
- DFS
- 최대공약수
- java
- 세그먼트 트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함