- Today
- Total
- CS
- array
- leetcode
- database
- PS
- tree
- ๋ฐฑ์๋
- ์์์ ๋ ฌ
- ๋ค์ต์คํธ๋ผ
- ์กธ์ ์ํ
- ์ธํด
- pytorch
- ๊ทธ๋ฆฌ๋
- java
- Algorithm
- ์๋ฐ์์ ์
- ํ๋ก๊ทธ๋๋จธ์ค
- ๊ตฌํ
- dp
- OOP
- ๋ฌธ๋ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- spring
- ์๋ฃ๊ตฌ์กฐ
- ๋ฐฑ์ค
- Graph
- BFS
- ๋ฒจ๋งํฌ๋
- ์๋ฐ
- MST
Partially Committed
[๋ฐฑ์ค 11403] ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/11403
๋ฌธ์
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N (1 ≤ N ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ ์ค์๋ ๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ์ด ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์ซ์๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ i์์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ ๋ป์ด๊ณ , 0์ธ ๊ฒฝ์ฐ๋ ์๋ค๋ ๋ป์ด๋ค. i๋ฒ์งธ ์ค์ i๋ฒ์งธ ์ซ์๋ ํญ์ 0์ด๋ค.
์ถ๋ ฅ
์ด N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ๋ฌธ์ ์ ์ ๋ต์ ์ธ์ ํ๋ ฌ ํ์์ผ๋ก ์ถ๋ ฅํ๋ค. ์ ์ i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์ซ์๋ฅผ 1๋ก, ์์ผ๋ฉด 0์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
์์ ์ ๋ ฅ 1
3
0 1 0
0 0 1
1 0 0
์์ ์ถ๋ ฅ 1
1 1 1
1 1 1
1 1 1
์์ ์ ๋ ฅ 2
7
0 0 0 1 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 1 1 0
1 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 0 0
์์ ์ถ๋ ฅ 2
1 0 1 1 1 1 1
0 0 1 0 0 0 1
0 0 0 0 0 0 0
1 0 1 1 1 1 1
1 0 1 1 1 1 1
0 0 1 0 0 0 1
0 0 1 0 0 0 0
๋ ธ๋์ ๊ฐ์๊ฐ 100 ์ผ๋ก ์์ ํธ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๊ฒ์ด ํธํ๋ค.
๊ธฐ์กด์ ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๊ฒ์ผ๋ก,
A-B ๊น์ง ์ต๋จ ๊ฒฝ๋ก๊ฐ ์๋ค๊ณ ํ๊ณ , ๊ทธ ์ฌ์ด์ ๋ ธ๋ K ๊ฐ ์๋ค๋ฉด A-K, K-B ๋ํ ๋ถ๋ถ ์ต๋จ ๊ฒฝ๋ก๊ฐ ๋๋ค๋ ๊ฒ์ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ ธ๋ ๊ฐ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๋ค.
์ด๋ฅผ ์กฐ๊ธ๋ง ์์ ํ์.
A-B ์ฌ์ด์ ์ค๊ฐ ๋ ธ๋ K ๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด, A-B ๋ํ ์ฐ๊ฒฐ๋ ๊ฒ์ด๋ค.
์ฆ, graph[a][k] == 1 ์ด๊ณ graph[k][b] == 1 ์ด๋ฉด graph[a][b] == 1 ์ผ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ์.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
static int graph[][];
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("src/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer stk;
int n = Integer.parseInt(br.readLine()); // ๋
ธ๋ ๊ฐ์
graph = new int[n + 1][n + 1];
// ์ด๊ธฐํ
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j)
graph[i][j] = 0;
else
graph[i][j] = 10000000;
}
}
for (int i = 1; i <= n; i++) {
stk = new StringTokenizer(br.readLine());
for(int j = 1 ; j <= n ; j ++){
int cost = Integer.parseInt(stk.nextToken());
if(graph[i][j] > cost && cost != 0){
graph[i][j] = cost;
}
}
}
// ํ๋ก์ด๋ - ์์
์๊ณ ๋ฆฌ์ฆ O(v^3)
for (int k = 1; k <= n; k++) {
for (int s = 1; s <= n; s++) {
for (int e = 1; e <= n; e++) {
if (graph[s][k] == 1 && graph[k][e] == 1)
graph[s][e] = 1;
}
}
}
// ์ ๋ต ์ถ๋ ฅ
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (graph[i][j] == 10000000)
bw.write("0 ");
else
bw.write(graph[i][j] + " ");
}
bw.write("\n");
}
bw.flush();
bw.close();
}
}
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1197] ์ต์ ์คํจ๋ ํธ๋ฆฌ (JAVA) (0) | 2023.01.19 |
---|---|
[๋ฐฑ์ค 1389] ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2023.01.19 |
[๋ฐฑ์ค 11404] ํ๋ก์ด๋ (0) | 2023.01.19 |
[๋ฐฑ์ค 1219] ์ค๋ฏผ์์ ๊ณ ๋ฏผ (JAVA) (0) | 2023.01.18 |
[๋ฐฑ์ค 11657] ํ์๋จธ์ (JAVA) (0) | 2023.01.18 |