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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include <iostream> using namespace std; const int MAX = 100; int N; int graph[MAX][MAX]; void floyd(void) { //i->j로 가는 길이 없어도 //k를 거쳐갈 수 있으면 갈 수 있다고 여긴다 for (int k = 0; k < N; k++) for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if (graph[i][k] && graph[k][j]) graph[i][j] = 1; } int main(void) { cin >> N; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) cin >> graph[i][j]; floyd(); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) cout << graph[i][j] << " "; cout << endl; } return 0; } | cs |
'알고리즘 > DFS' 카테고리의 다른 글
10026 적록색약 (0) | 2019.07.30 |
---|---|
11724 연결요소의 갯수 (0) | 2019.07.30 |
1012 유기농 배추 (0) | 2019.07.29 |
2667 단지번호 붙이기 (0) | 2019.07.29 |
1260 DFS와 BFS (0) | 2019.07.29 |