알고리즘/BOJ문제풀이

182번째 문제 - 11403 경로찾기

quantdave 2016. 11. 23. 21:14

문제 링크 : https://www.acmicpc.net/problem/11403


#include <iostream>

#include <algorithm>

using namespace std;


int N, via[101][101];


int main(){

//input

cin>>N;

for(int i=0; i<N;i ++)

{

for(int j=0; j<N; j++)

{

cin>>via[i][j];

}

}


//calc

for (int k = 0; k < N; k++) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

if (via[i][k] == 1 && via[k][j] == 1) {

via[i][j] = 1;

}

}

}

}

//output

for(int i=0; i<N; i++)

{

for(int j=0; j<N; j++)

{

cout<<via[i][j]<<" ";

}

cout<<endl;

}

}


시간 복잡도가 |V|^3 인데 이게 최적인 것 같다.

플로이드 알고리즘 그대로 가져다 사용해도 되는데 이렇게 하는게 더 깔끔한듯 (사실 별  차이는 없다)