문제 링크 : https://www.acmicpc.net/problem/11403
아이디어 : BFS
한 줄을 탐색하면서, 값이 1인 것인 정점을 기준으로 탐색함.
그래서 답으로 사용할 배열의 값을 1로 변경.
#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
int N;
int nMap[101][101];
int nAns[101][101];
int nChecked[101][101];
queue<int> q;
void BFS(int y)
{
q.push(y);
while (!q.empty())
{
int cy = q.front();
q.pop();
for (int i = 1; i <= N; i++)
{
if (nMap[cy][i] == 1 && nChecked[cy][i] == 0)
{
nAns[y][i] = 1;
nChecked[cy][i] = 1;
q.push(i);
}
}
}
}
int main(void)
{
cin >> N;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
cin >> nMap[i][j];
}
}
for (int y = 1; y <= N; y++)
{
BFS(y);
memset(nChecked, 0, sizeof(nChecked));
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
cout << nAns[i][j] << " ";
}
cout << endl;
}
return 0;
}
의견 : 처음에 문제 뜻을 이해 못했음. 그래서 출력 결과 또한 이해 못했음.
'개발 > 백준' 카테고리의 다른 글
백준 1325번: 효율적인 해킹 (0) | 2019.09.24 |
---|---|
백준 1963번: 소수 경로 (0) | 2019.09.02 |
백준 1389번: 케빈 베이컨의 6단계 법칙 (0) | 2019.09.01 |
백준 11724번: 연결 요소의 개수 (0) | 2019.08.29 |
백준 7562번: 나이트의 이동 (0) | 2019.08.28 |