문제
https://www.acmicpc.net/problem/10159
풀이
플로이드 와샬 알고리즘을 사용하여 풀 수 있다.
ex) 1 > 2 , 2 > 3 ===> 1 > 3
소스코드
package floyd;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class BOJ10159 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int M = Integer.parseInt(br.readLine());
int map[][] = new int[N+1][N+1];
StringTokenizer st = null;
for(int i = 1; i <= M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
// a > b
map[a][b] = 1;
map[b][a] = -1;
}
for(int k = 1; k <= N; k++) {
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= N; j++) {
if(map[i][k] == 1 && map[k][j] == 1) {
map[i][j] = 1;
map[j][i] = -1;
}
if(map[i][k] == -1 && map[k][j] == -1) {
map[i][j] = -1;
map[j][i] = 1;
}
}
}
}
for(int i = 1; i <= N; i++) {
int cnt = 0;
for(int j = 1; j <= N; j++) {
if(i == j) continue;
if(map[i][j] == 0) cnt++;
}
System.out.println(cnt);
}
}
}
'💡Problem Solving > BOJ' 카테고리의 다른 글
[BOJ 3190] 뱀 (Python) (0) | 2022.11.16 |
---|---|
[BOJ 1167] 트리의 지름 (Java) (0) | 2022.01.02 |
[BOJ 11779] 최소비용 구하기 2 (Java) (0) | 2021.12.30 |
[BOJ 6603] 로또 (Java) (0) | 2021.12.28 |
[BOJ 1261] 알고스팟 (Java) (0) | 2021.12.27 |