[BOJ] 10159.์ ์ธ (Java)
by ๋๋ถ๋
10159๋ฒ: ์ ์ธ
์ฒซ ์ค์๋ ๋ฌผ๊ฑด์ ๊ฐ์ N ์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ๋ฏธ๋ฆฌ ์ธก์ ๋ ๋ฌผ๊ฑด ์์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. ๋จ, 5 ≤ N ≤ 100 ์ด๊ณ , 0 ≤ M ≤ 2,000์ด๋ค. ๋ค์ M๊ฐ์ ์ค์ ๋ฏธ๋ฆฌ ์ธก์ ๋ ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ํ ์ค์ ํ๋์ฉ
www.acmicpc.net
์ด ๋ฌธ์ ์์๋ N๊ฐ์ ๋ฌผ๊ฑด, M ๊ฐ์ ๋ฌผ๊ฑด์์ด ์ฃผ์ด์ง๋ฉฐ,
๋ฌผ๊ฑด i์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ ๋ฌผ๊ฑด ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ ๋๋ค.
ํด๋น ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ํ๋ก์ด๋-์์ (Floyd-Warshall) ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ก์ด๋-์์ ์ ๋ชจ๋ ์ ์ ์์ ๋ชจ๋ ์ ์ ์ผ๋ก์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก,
๊ฑฐ์ณ๊ฐ๋ ์ ์ ์ ๊ธฐ์ค์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ํํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ 3๊ฐ๊ฐ ์ค์ฒฉ๋์ด ์๋๋ฐ,
์ ์ผ ๋ฐ๊นฅ์ชฝ ๋ฐ๋ณต๋ฌธ์ ๊ฑฐ์ณ๊ฐ๋ ๊ผญ์ง์ , ๋ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ ์ถ๋ฐํ๋ ๊ผญ์ง์ , ์ธ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ ๋์ฐฉํ๋ ๊ผญ์ง์ ์ ๋๋ค.
์ฌ๊ธฐ์๋ ๊ฑฐ์ณ๊ฐ๋ ์ ์ ์ ๋ํด ์ฒดํฌํ๋ ๋ฐฉ์์ผ๋ก ํ๋ฉด ๋ฉ๋๋ค. ๐๐
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine()); // ๋ฌผ๊ฑด ์
int M = Integer.parseInt(br.readLine()); // ๋ฌผ๊ฑด ์์ ์
StringTokenizer st;
int[][] relation= new int[N+1][N+1];
int num1, num2;
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
num1 = Integer.parseInt(st.nextToken());
num2 = Integer.parseInt(st.nextToken());
relation[num1][num2] = 1; // num1 > num2
relation[num2][num1] = -1; // num1 < num2
}
floydWarshall(N, relation);
int cnt;
for (int i = 1; i <= N; i++){
cnt = N-1; // ์์ ์ ์ ์ธํ ์ ์ฒด ๋ฌผ๊ฑด ์
for (int j = 1; j <= N; j++) {
if (relation[i][j] != 0) // ๋ฌผ๊ฑด์ ๊ด๊ณ์ ๋ํด ์๋ ๊ฒฝ์ฐ
cnt--; // ์๋ ๋งํผ ์ค์ฌ์ค
}
bw.write(String.valueOf(cnt) + '\n');
}
bw.flush();
bw.close();
br.close();
}
public static int[][] floydWarshall(int N, int[][] relation) {
for (int k = 1; k <= N; k++) { // ๊ฑฐ์ฒ๊ฐ๋ ๊ผญ์ง์
for (int s = 1; s <=N; s++) { // ์ถ๋ฐํ๋ ๊ผญ์ง์
for (int e = 1; e <= N; e++) { // ๋์ฐฉํ๋ ๊ผญ์ง์
if (relation[s][k] != 0 && relation[s][k] == relation[k][e]) {
// 0์ด ์๋ ๋ => s๊ฐ k๋ณด๋ค ๋ฌด๊ฑฐ์ด ๋๋ ๊ฐ๋ฒผ์ด ๋ฌผ๊ฑด์ผ ๋
// s-k์ k-e๊ฐ ๊ฐ์ผ๋ฉด s-e๋ ๊ฐ์ผ๋ฏ๋ก s-e์ s-k๊ฐ ๋์
ํ์ฌ ์๋ก ์ ์ ์๋๋ก ํด์ค
relation[s][e] = relation[s][k];
}
}
}
}
return relation;
}
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 1759.์ํธ๋ง๋ค๊ธฐ (Java) (0) | 2021.06.20 |
---|---|
[BOJ] 12094.A์ B (Java) (0) | 2021.06.10 |
[BOJ] 1043.๊ฑฐ์ง๋ง (Java) (0) | 2021.04.30 |
[BOJ] 5430.AC (Java) (0) | 2021.04.30 |
[BOJ] 5052.์ ํ๋ฒํธ ๋ชฉ๋ก (Java) (0) | 2021.04.30 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
๋๋ถ๋์ Devlog
๋๋ถ๋