본문 바로가기

알고리즘/그래프4

그래프의 표현 - 물의 양 구하기 미로 탐색, 단지 번호 붙이기와 유사하게 노드에서 갈 수 있는 경우를 이용해 문제에 접근하면 된다. 백준 - 2251: 물의 양 구하기 https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 첫 번째 물통(용량이 A인)이 비어 있을 때, 세 번째 물통(용량이 C인)에 담겨있을 수 있는 물의 양을 모두 구해내는 프로그램을 작성하면 된다. 예) 입력 출력 8 9 10 1 2 8 9 10 1. 노드에서 갈 수 있는 6가지 이동 경우(A .. 2023. 3. 11.
그래프의 표현 - 이분 그래프 판별하기 이 문제는 이분 그래프에 대한 기초 지식을 요구한다. 이분 그래프란 아래 그림처럼 모든 꼭짓점을 빨강색(집합1)과 파랑색(집합2)으로 표현하되, 모든 변이 빨강색(집합1)과 파랑색(집합2) 꼭짓점을 포함하도록 표현되는 그래프이다. 이 말은 즉, 그래프에서 사이클이 존재하면 안된다는 의미이다. 백준 - 1707: 이분 그래프 판별하기 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스.. 2023. 3. 11.
그래프의 표현 - 효율적으로 해킹하기 이번 문제는 BFS와 DFS를 모두 이용할 수 있는 문제이다. 백준 - 1325: 효율적으로 해킹하기 https://www.acmicpc.net/problem/1325 > n_num >> e_num; graph.resize(n_num + 1); visited.resize(n_num + 1, 0); answer.resize(n_num + 1, 0); for (i = 0; i > n1 >> n2; graph[n1].push_back(n2); } for (i = 1; i > n1 >> n2; graph[n1].push_back(n2); } for (int i = 1; i > n1 >> n2; graph[n1].push_back(n2); } for (int i = 1; i .. 2023. 3. 11.
그래프의 표현 - 특정 거리의 도시 찾기 이번 문제는 가중치 없는 인접 리스트로 접근하면 되는 문제이며, 문제 풀이에 탐색을 이용해야 한다. 백준 - 18352: 특정 거리의 도시 찾기 https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재하며, 모든 도로의 거리는 1이다. 이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 .. 2023. 3. 11.