본문 바로가기

BFS

(29)
[BOJ] 16932번 모양 만들기 (C++) https://www.acmicpc.net/problem/16932 16932번: 모양 만들기 N×M인 배열에서 모양을 찾으려고 한다. 배열의 각 칸에는 0과 1 중의 하나가 들어있다. 두 칸이 서로 변을 공유할때, 두 칸을 인접하다고 한다. 1이 들어 있는 인접한 칸끼리 연결했을 때, 각각의 www.acmicpc.net #include #include #include #include #include using namespace std; int n, m; int arr[1000][1000]; bool visited[1000][1000]; int group[1000][1000]; int group_num = 1; vector group_size; int answer = -1; int dx[4] = { -1..
[BOJ] 23352번 방탈출 (C++) https://www.acmicpc.net/problem/23352 23352번: 방탈출 첫줄에 지도의 세로 크기 $N$($1 \le N \le 50$), 가로 크기 $M$($1 \le M \le 50$)이 공백을 두고 주어진다. 둘째 줄부터 $N$줄에 걸쳐 각 방들의 정보 $A$($0 \le A \le 9$)가 공백을 두고 주어진다. www.acmicpc.net #include #include #include using namespace std; int n, m; int maxlength = -1, answer; int map[50][50]; bool visited[50][50]; int dx[4] = { -1, 0, 0, 1 }; int dy[4] = { 0, -1, 1, 0 }; void init(..
[BOJ] 3055번 탈출 (C++) https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net #include #include #include using namespace std; int r, c, bx, by; int answer = 0; char map[50][50]; queue waterq; queue sq; int dx[4] = {-1, 0, 0, 1}; int dy[4] = {0, -1, 1, 0}; void bfs(){ while(!sq.empty()){ //for(int i = 0; i <..
[BOJ] 2206번 벽 부수고 이동하기 (C++) https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net #include #include #include using namespace std; int n, m; char map[1001][1001]; int visited[1001][1001][2]; int dx[4] = {-1, 0, 0, 1}; int dy[4] = {0, -1, 1, 0}; bool bfs(int x, int y){ queue q; // {벽 뚫기 여부, {..
[CodeTree] 바이러스 백신 (C++) [삼성 SW 역량테스트 기출] https://www.codetree.ai/training-field/frequent-problems/problems/vaccine-for-virus 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai #include #include #include #include #include using namespace std; int n, m, answer = 987654321; int map[50][50]; int tmp[50][50]; int visited[50][50]; vector hospital; vector picked; bool isUsed[10]; ..
[CodeTree] 방화벽 설치하기 (C++) [삼성 SW 역량테스트 기출] https://www.codetree.ai/training-field/frequent-problems/problems/firewall-installation 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai #include #include #include #include using namespace std; int n, m, answer; int map[8][8]; int tmp[8][8]; bool isUsed[64]; int dx[4] = {-1, 0, 0, 1}; int dy[4] = {0, -1, 1, 0}; vector blank; vector..
[BOJ] 11437번 LCA (C++) https://www.acmicpc.net/problem/11437 11437번: LCA 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정 www.acmicpc.net #include #include #include using namespace std; int parent[50001]; int depth[50001]; bool visited[50001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector node[50001]; for(int i = 0; i < n..
[BOJ] 5567번 결혼식 (C++) https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net #include #include #include #include using namespace std; int n, m; vector v[501]; bool visited[501]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; for(int i = 0; i < m; i++){ int a, b; cin ..