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
- 객체정렬
- django
- 진수 int형으로
- startswith
- 전화번호목록
- Java
- 자바
- 7699
- 11562
- 특정인덱스바꾸기
- 완주하지못한선수
- 그래프adt
- 백준
- 명령어
- git
- 단어변환
- 백양로브레이크
- K번째수
- 스타일리쉬들여쓰기
- SWEA
- 타겟넘버
- 타도
- toCharArray()
- 10580번
- 프로젝트
- 2579
- SSAFY
- 알고리즘
- 시작
- 프로그래머스
Archives
- Today
- Total
합리적 낙관주의자
Baekjoon 11562번: 백양로 브레이크 본문
https://www.acmicpc.net/problem/11562
11562번: 백양로 브레이크
서울 소재 Y모 대학교에서 대규모 공사를 진행하면서, 학교가 마치 미로처럼 변해버리고 말았다. 공사 이전까지는 어떤 건물에서 출발하더라도 다른 모든 건물로 갈 수 있는 길이 있었으나, 공사가 진행되면서 어떻게 한 건진 알 수 없지만 일방통행만 가능한 길이 많이 늘고 말았다. 컴퓨터과학과 학생 남규는 전공 수업을 듣고 교양 수업을 들으러 가던 중 길을 잃어 3일 밤낮을 헤매다가 공학관에서 종합관으로 가는 길은 존재하지 않는다는 결론을 내렸다. 3일 사이에
www.acmicpc.net
백양로 브레이크~
플로이드 워셜 알고리즘을 이용해 풀었다. 플로이드 워셜 알고리즘은 시간 복잡도가 O(n^3)이지만 구현이 쉽다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
//백양로 브레이크
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String[] sarr = str.split(" ");
int n = Integer.parseInt(sarr[0]);
int m = Integer.parseInt(sarr[1]);
int[][] map = new int [n][n];
for (int i = 0; i < n; i++) { // 행만큼만 반복
Arrays.fill(map[i], 9999);
map[i][i] = 0; // 자기자신 정점
}
int u = 0, v = 0, b = 0;
for (int input = 0; input < m; input++) {
str = br.readLine();
sarr = str.split(" ");
u = Integer.parseInt(sarr[0])-1;
v = Integer.parseInt(sarr[1])-1;
b = Integer.parseInt(sarr[2]);
map[u][v] = 0;
if(b == 0) {
map[v][u] = 1;
} else {
map[v][u] = 0;
}
}//end of input for
// 플로이드 워셜
for (int k = 0; k < n; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
map[i][j] = Math.min(map[i][j], map[i][k]+map[k][j]);
}
}
}
int k = Integer.parseInt(br.readLine());
for (int output = 0; output < k; output++) {
str = br.readLine();
sarr = str.split(" ");
int s = Integer.parseInt(sarr[0]) - 1;
int e = Integer.parseInt(sarr[1]) - 1;
System.out.println(map[s][e]);
}
}//end of main
}//end of class
'Computer Thinking 🌟 > Algorithm 📝' 카테고리의 다른 글
SWEA [D4] 7699번: 수지의 수지 맞는 여행 (0) | 2020.08.27 |
---|---|
Programmers 단어변환: DFS/BFS (0) | 2020.08.27 |
Programmers 네트워크: DFS/BFS (0) | 2020.08.27 |
Programmers 타겟넘버: DFS/BFS (0) | 2020.08.27 |
Baekjoon 2579번: 계단오르기 - 런타임에러 해결 (0) | 2020.04.17 |