728x90
반응형
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Main{
public static int n;
public static int m;
public static int arr[][];
public static int INF=1000000000;
public static void main(String[]args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n=Integer.parseInt(br.readLine());
m=Integer.parseInt(br.readLine());
arr=new int[n+1][n+1];
//무한으로 초기화
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
arr[i][j]=INF;
}
}
//자기자신으로 가면 0
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
arr[i][j]=0;
}
}
}
//입력받기
for(int i=0;i<m;i++){
st=new StringTokenizer(br.readLine());
int a= Integer.parseInt(st.nextToken());
int b=Integer.parseInt(st.nextToken());
int c=Integer.parseInt(st.nextToken());
arr[a][b]=Math.min(arr[a][b],c);//노선이 여러개일 경우 원래있던값이랑 새로운값 중 비교
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
arr[j][k]=Math.min(arr[j][k],arr[j][i]+arr[i][k]);
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(arr[i][j]==INF){
System.out.print("0"+" ");
}
else{
System.out.print(arr[i][j]+" ");
}
}
System.out.println();
}
}
}
|
cs |
모든 지점에서 모든 지점까지 최단거리를 구할때는 플로이드 알고리즘을 쓴다!
728x90
반응형
'알고리즘 > 그래프' 카테고리의 다른 글
[java 백준] 골드 3/ 1238번 파티 (0) | 2022.07.08 |
---|---|
[java 백준] 이것이 코딩테스트이다.- 화성탐사 (java) (0) | 2022.07.06 |
[java 백준] 골드 5/ 16234번 인구이동 (0) | 2022.07.05 |
[java 백준] 실버 1/ 14888번 연산자 끼워넣기 (0) | 2022.07.03 |
[java 백준] 골드 5/ 14502번 연구소 (0) | 2022.06.28 |
댓글