Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- CS Academy
- hashing
- disjoint-set
- flows
- Euler path
- Dag
- POJ
- Sieve_of_Eratosthenes
- Shortest path
- graph
- Segment Tree
- Eulerian path
- Cycle detecting
- bitmask
- BST
- Greedy
- GCD
- DynamicProgramming
- graph modeling
- 백준
- scc
- Algospot
- BOJ
- dynamic programming
- BFSDFS
- Eulerian circuit
- backtracking
- mathematics
- Euler circuit
- implementation
Archives
- Today
- Total
그냥 하는 노트와 메모장
BOJ 1765 - The Gangs 본문
* BOJ 1765 - The Gangs (닭싸움 팀 정하기, https://www.acmicpc.net/problem/1765)
[ 분류 - BFS, DFS/ DSU/ Hashing ]
이분 그래프가 여러개 생길 수 있는 구조를 생각하자. 조건에 따르면 특정 Component A에 대해 A의 적은 단 하나 밖에 존재하지 않는다.
따라서 자신의 적을 저장할 자료구조(Hashing)와 친구를 저장할 자료구조(인접 행렬 및 리스트/ DSU)를 정해야 한다.
* 풀이
친구를 저장할 때는 인접 행렬 및 리스트로 저장하는 것은 꽤 간단하다. 하지만 적을 저장할 때는 어떻게 해야 할까?
이분 그래프이기 때문에 적을 단 하나만 저장한다. 이를 루트로 두고, 들어오는 데이터에 따라 자신의 적을 읽어들여, 적과 적을 이어주도록 한다. 우리의 적은 "현재 저장된 적"과는 친구이기 때문에 마찬가지로 인접 행렬 및 리스트에 연결을 시켜줘야만 한다. 이렇게하면 문제에서 주어진 조건대로 Components를 나눌 수 있다.
- 코드
'Solved problems' 카테고리의 다른 글
BOJ 6084 - Laserphones (레이저 통신) (0) | 2018.07.02 |
---|---|
BOJ 5213 - TOTEM (과외맨) (0) | 2018.07.02 |
BOJ 3964 - 팩토리얼과 거듭제곱 (0) | 2018.06.30 |
BOJ 1103 - 게임 (0) | 2018.06.24 |
BOJ 2981 - 검문 (0) | 2018.06.24 |
Comments