문제

https://www.acmicpc.net/problem/11562

걸린 시간

01 : 33 : 49 실패

풀이

C++

#include <bits/stdc++.h>
#define INF 987654321
using namespace std;

int n, m;
int u, v, b;
int k, s, e;
int adj[251][251];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            adj[i][j] = INF;
    for(int i = 0; i < m; i++){
        cin >> u >> v >> b;
        adj[u][v] = 0;
        adj[v][u] = (b == 0 ? 1 : 0);
    }
    for(int i = 1; i <= n; i++)
        adj[i][i] = 0;
    for(int k = 1; k <= n; k++)
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= n; j++)
                adj[i][j] = min(adj[i][j], adj[i][k] + adj[k][j]);
    cin >> k;
    for(int i = 0; i < k; i++){
        cin >> s >> e;
        cout << adj[s][e] << "\n";
    }
    return 0;
}

가중치가 1로 일정한 그래프이므로 bfs 를 통해 탐색한 최단거리 중, 간선의 방향을 바꾸지 않고도 이동할 수 있는 경로를 세어 결과값에서 뺀 후 제출했지만 틀렸습니다 가 출력되었다.

정답을 보니 한 정점에서 다른 정점으로 이동이 불가능할 때 인접 배열의 값을 1로 하여 플로이드 와샬 알고리즘을 돌리면 간단히 정답을 구할 수 있는 문제였다.

'Baekjoon' 카테고리의 다른 글

Baekjoon 17877번 Integer Division  (0) 2020.09.16
Baekjoon 17827번 달팽이 리스트  (0) 2020.09.16
Baekjoon 18352번 특정 도시의 거리 찾기  (0) 2020.09.14
Baekjoon 4811번 알약  (0) 2020.09.12
Baekjoon 12869번 뮤탈리스크  (0) 2020.09.12

댓글