Algorithm/📖Baekjoon

#11403 경로 찾기

yewoneeee 2022. 6. 25. 15:55

# 문제

# 입력 및 출력

# 풀이

N*N 행렬을 전부 조회해서 해당 좌표를 시작점으로 잡고 연결된 곳을 전부 1로 표시해줌

시작점으로 잡았던 좌표만 visit를 체크해줌

 

#include <iostream>
using namespace std;
int graph[100][100];
int visit[100][100];
int n;

void dfs(int x, int y) {
	visit[x][y] = 1;
	for (int i = 0; i < n; i++) {
		if (graph[y][i]) {
			graph[x][i] = 1;
			if (!visit[x][i]) dfs(x, i);
		}
	}
}

void print() {
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cout << graph[i][j] << " ";
		}
		cout << "\n";
	}
}

int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cin >> graph[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (graph[i][j] && !visit[i][j]) dfs(i, j);
		}
	}
	print();
}