반응형
05-14 05:47
Today
Total
«   2024/05   »
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
관리 메뉴

개발하는 고라니

[백준] 10159번 : 저울 본문

Programming/백준

[백준] 10159번 : 저울

조용한고라니 2021. 3. 6. 02:08
반응형
 

10159번: 저울

첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩

www.acmicpc.net


[Floyd Warshall (플로이드 와샬)]

일반적인 플로이드 와샬 알고리즘으로 모든 정점에서 다른 모든 정점으로의 최단 거리를 구한다. 이 때 가볍고 무겁다는 것은 양방향이 아닌 단방향이다.

 

그러므로 a정점에서 b정점에 대하여 어느 것이 가볍고 무거운지 모르고, 마찬가지로 b정점에서 a정점에 대하여 어느 것이 가볍고 무거운지 모른다면 (distance[a][b] == INF && distance[b][a] == INF) 비교 결과를 알 수 없는 것이다.

 

플로이드 와샬 알고리즘을 사용했으므로 시간 복잡도는 O(n^3)이 될 것 이다.

# Code </>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    static final int INF = 1000000000;
    static int[][] d = new int[101][101];

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int m = Integer.parseInt(br.readLine());

        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
                d[i][j] = (i != j) ? INF : 0;

        for(int i=0; i<m; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            int heavy = Integer.parseInt(st.nextToken());
            int light = Integer.parseInt(st.nextToken());

            d[heavy][light] = 1;
        }

        for(int k=1; k<=n; k++)
            for(int i=1; i<=n; i++)
                for(int j=1; j<=n; j++)
                    d[i][j] = Math.min(d[i][j], d[i][k] + d[k][j]);

        for(int i=1; i<=n; i++) {
            int cnt = 0;
            for (int j = 1; j <= n; j++)
                if(d[i][j] == INF && d[j][i] == INF)
                    cnt++;

            System.out.println(cnt);
        }
    }
}
반응형

'Programming > 백준' 카테고리의 다른 글

[백준] 1507번 : 궁금한 민호  (0) 2021.03.06
[백준] 1486번 : 등산  (0) 2021.03.06
[백준] 16398번 : 행성 연결  (0) 2021.03.06
[백준] 2660번 : 회장뽑기  (0) 2021.03.04
[백준] 2458번 : 키 순서  (0) 2021.03.03
Comments