Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d729f7b

Browse files
committed
고다혜: [BOJ] 1613 역사_241113
1 parent 87ae121 commit d729f7b

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

‎BOJ/1000-5000번/DH_1613.java‎

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
/*
5+
* 역사
6+
*/
7+
8+
public class DH_1613 {
9+
static final int INF = Integer.MAX_VALUE;
10+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
static StringTokenizer st;
12+
static int[][] arr;
13+
14+
public static void main(String[] args) throws Exception {
15+
initInput();
16+
solution();
17+
getOrder();
18+
}
19+
20+
static void getOrder() throws Exception {
21+
int n = Integer.parseInt(br.readLine());
22+
23+
StringBuilder sb = new StringBuilder();
24+
25+
for(int i = 0; i < n; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
int s = Integer.parseInt(st.nextToken());
28+
int e = Integer.parseInt(st.nextToken());
29+
30+
// s지점에서 e지점으로 가거나, e지점에서 s지점으로 가는 길이 둘 다 없는 경우는 선후 관계를 알 수 없음
31+
if(arr[s][e] == INF && arr[e][s] == INF) sb.append(0);
32+
else if(arr[s][e] != Integer.MAX_VALUE) sb.append(-1); // s에서 e지점으로 갈 수 있다면 s가 더 빠른 사건
33+
else sb.append(1); // 반대의 경우라면 e가 더 빠른 사건
34+
sb.append("\n");
35+
}
36+
37+
System.out.println(sb);
38+
}
39+
40+
// 플로이도워셜을 통해 각 지점간 거리 구하기
41+
static void solution() {
42+
for(int k = 1; k < arr.length; k++) {
43+
for(int s = 1; s < arr.length; s++) {
44+
if(s == k || arr[s][k] == INF) continue;
45+
for(int e = 1; e < arr.length; e++) {
46+
if(e == k || e == s || arr[k][e] == INF) continue;
47+
48+
if(arr[s][e] > arr[s][k] + arr[k][e])
49+
arr[s][e] = arr[s][k] + arr[k][e];
50+
}
51+
}
52+
}
53+
}
54+
55+
static void initInput() throws Exception {
56+
st = new StringTokenizer(br.readLine());
57+
58+
int n = Integer.parseInt(st.nextToken());
59+
int k = Integer.parseInt(st.nextToken());
60+
61+
arr = new int[n + 1][n + 1];
62+
63+
// 초기 지점 간 거리 무한대로 초기화해주기
64+
for(int r = 0; r < arr.length; r++) Arrays.fill(arr[r], INF);
65+
66+
for(int i = 0; i < k; i++) {
67+
st = new StringTokenizer(br.readLine());
68+
69+
int s = Integer.parseInt(st.nextToken());
70+
int e = Integer.parseInt(st.nextToken());
71+
72+
arr[s][e] = 1;
73+
}
74+
}
75+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /