(๋ฐฑ์ค/c++) 11403 - ๊ฒฝ๋ก์ฐพ๊ธฐ / BFS, ๊ทธ๋ํ๐ coding test/โฝ ๋ฐฑ์ค2024. 8. 16. 17:59
Table of Contents
728x90
"(๋ฐฑ์ค/c++) 11403 - ๊ฒฝ๋ก์ฐพ๊ธฐ / BFS, ๊ทธ๋ํ"
https://www.acmicpc.net/problem/11403
๐ solved.ac ๋์ด๋: ์ค๋ฒ1
์ค๋ ์ฌ๋ ๋ ์ด๋ผ ๋ฌธ์ ํธ๋๊ฒ ์ฌ๋ฏธ์๋ค.
Array ๋ณ์ ์ด๋ฆ์ Floyed์ด์ง๋ง? ํ๋ก์ด๋ ์์ฌ๋ณด๋ค BFS๋ฅผ ์ฌ์ฉํด์ ํธ๋๊ฒ ๋ ํธํ ๊ฑฐ ๊ฐ์์ BFS๋ก ํ์๋ค.
๋ค๋ฅธ BFS์ ๋ค๋ฅธ ์ ์ ๋ชจ๋ ์ ์์ ๋ฐฉ๋ฌธ์ ์ด๊ธฐํ ์์ผ์ค์ผํ๋ค.
ex ) 1 -> 5 -> 6 -> 7 ์ด๋ฐ ์ฐ๊ฒฐ์ด ์์ ๋, 1์ 5, 6, 7์ ๋ชจ๋ ๋ฐฉ๋ฌธ ํ ์ ์๋ค๋ ํ์๋ฅผ ํด์ค์ผํ๊ณ ๊ทธ ๋ค์ 5๋ฒ, 6๋ฒ, 7๋ฒ์ ๋ ์ด์ ์ ๋ฐฉ๋ฌธ ํ๋๋ผ๋ ์ฐ๊ฒฐ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์ ์์์ ์์ ๋ฐฉ๋ฌธ์ ์ด๊ธฐํ ํด์ผํ๋ค.
#include<iostream>
#include<vector>
#include<queue>
#include<memory.h>
using namespace std;
vector<int> arr[101];
int Floyed[101][101] = {0, };
bool visit[101] = { false, };
queue<int> que;
int main(void)
{
int N; cin >> N;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
int a;
cin >> a;
if (a)
{
arr[i].push_back(j);
}
}
}
//=============================================//
for (int i = 1; i <= N; ++i)
{
memset(visit, false, sizeof(visit));
if (visit[i])
{
continue;
}
que.push(i);
visit[i] = true;
while (!que.empty())
{
int temp = que.front();
visit[temp] = true;
que.pop();
for (int j = 0; j < arr[temp].size(); ++j)
{
if (visit[arr[temp][j]] == false)
{
visit[arr[temp][j]] = true;
Floyed[i][arr[temp][j]] = 1;
que.push(arr[temp][j]);
}
else if(visit[arr[temp][j]] == true && arr[temp][j] == i)
{
Floyed[i][i] = 1;
}
}
}
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
cout << Floyed[i][j] << " ";
}
cout << endl;
}
return 0;
}
728x90
'๐ coding test > โฝ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@DoctorSunAhna :: ํํฌ์ฝ๋ฅ
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!