본문 바로가기
백준 문제 풀이

[백준 11403] 경로 찾기

by $# 2020. 3. 19.

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


해설

이번 문제도 11403번 플로이드 ( 참고 : https://far-simple.tistory.com/8 ) 문제와 마찬가지로 플로이드 와샬 알고리즘을 사용 해 푸는 문제입니다.

11403번 풀이에 플로이드에 관한 설명을 해놨으니 읽어보고 오시길 바라겠습니다.

 

문제에서 인접행렬이라고 써져있어서 뭐지? 싶을수도 있겠지만 그냥 N*N으로 출력하면 됩니다.

플로이드 점화식으로 중간에 임의의 점 k를 껴서 i->k 와 k-> j 에 길이 있다면 arr[i][j]를 1로 초기화 시켜주시면 됩니다.

 

 

˙˙˙

 

소스 코드

 

#include <iostream>
using namespace std;
int arr[101][101];
int main(){
	int n; cin >> n;
	for(int i=0; i<n; i++)
		for(int j=0; j<n; j++)
			cin >> arr[i][j];
	
    for(int k=0; k<n; k++)
		for(int i=0; i<n; i++)
			for(int j=0; j<n; j++)
				if(arr[i][k] && arr[k][j])
					arr[i][j] = 1;
	
    for(int i=0; i<n; i++){
		for(int j=0; j<n; j++)
			cout << arr[i][j] << ' ';
		cout << '\n';
	}
}

 

'백준 문제 풀이' 카테고리의 다른 글

[백준 2178] 미로 탐색  (0) 2020.03.21
[백준 7562] 나이트의 이동  (0) 2020.03.20
[백준 11404] 플로이드  (0) 2020.03.19
[백준 11720] 숫자의 합  (0) 2020.03.19
[백준 1008] A/B  (0) 2020.03.19

댓글