본문 바로가기

알고리즘/BFS

백준 11403 경로 찾기

#include 
#include 
#include 
using namespace std;

int N;
int Map[100][100];
int result[100][100];
bool visit[100];
queue q;

void Calc() {
	for (int i = 0; i < N; i++) {
		for (int q = 0; q < N; q++) {
			visit[q] = 0;
		}
		for (int j = 0; j < N; j++) {
			visit[i] = true;
			if (Map[i][j] == 1) {
				q.push(j);
				result[i][j] = 1;
			}
		}
		while (!q.empty()) {
			int current_po = q.front();
			q.pop();
			for (int k = 0; k < N; k++) {
				
				if (Map[current_po][k] == 1) {
					result[i][k] = 1;
					if (visit[k]) continue;
					visit[k] = true;
					q.push(k);
				}
			}
		}
		for (int u = 0; u < N; u++) {
			if (result[i][u] != 1) result[i][u] = 0;
		}
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			printf("%d ", result[i][j]);
		}
		printf("\n");
	}
}

void Input() {
	scanf("%d", &N);
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			scanf("%d", &Map[i][j]);
		}
	}
}

void Solve() {
	Input();
	Calc();
}


int main(void) {
	Solve();
	return 0;
}

'알고리즘 > BFS' 카테고리의 다른 글

백준 17142 연구소 3  (0) 2019.05.18
백준 1012번 유기농배추.  (0) 2019.04.23
백준 2667 단지 번호  (0) 2019.04.22
백준 7576 토마토  (0) 2019.04.22