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 |
Tags
- DCTTS
- 학습
- 보코더
- 음성 합성
- 한국어 음성 합성
- you only look once
- 한국어 tts
- deep voice
- waveglow
- YOLO
- singing voice synthesis
- tacotron
- 딥러닝 보코더
- Vocoder
- 트레이닝
- TTS
- korean tts
- 노래합성
- melgan
- 윈도우
- 딥러닝
- text-to-speech
- 딥러닝 음성 합성
- 타코트론
Archives
- Today
- Total
chldkato
백준 5214 환승 (파이썬) 본문
https://www.acmicpc.net/problem/5214
기본적인 bfs로 길찾기를 하면 메모리 초과가 발생한다
이를 해결하기 위한 방법을 생각해내는게 쉽지 않은 문제
1. 경로의 노드를 역과 하이퍼튜브로 설정한다. 따라서 배열의 사이즈는 n+m이다
2. '역-하이퍼튜브-역' 구조로 경로를 저장한다. 경로 배열의 0부터 n-1까지는 역, n부터 n+m-1까지는 하이퍼튜브
3. bfs로 길을 찾으면서 하이퍼튜브로 가면 이동 횟수에 변화를 주지 않고 역에 도착하면 횟수를 증가시킨다
4. 목적지에 도착하면 이동 횟수 출력
from collections import deque
import sys
input = sys.stdin.readline
def bfs():
q.append(0)
c[0] = 1
while q:
x = q.popleft()
if x == n-1:
print(c[x])
return
for nx in a[x]:
if not c[nx]:
if nx >= n:
c[nx] = c[x]
q.append(nx)
else:
c[nx] = c[x] + 1
q.append(nx)
print(-1)
n, k, m = map(int, input().split())
a = [[] for _ in range(n+m)]
c = [0 for _ in range(n+m)]
q = deque()
for i in range(m):
row = list(map(int, input().split()))
for j in range(k):
a[row[j]-1].append(n+i)
a[n+i].append(row[j]-1)
bfs()
'백준' 카테고리의 다른 글
백준 12761 돌다리 (파이썬) (0) | 2020.02.22 |
---|---|
백준 3197 백조의 호수 (파이썬) (0) | 2020.02.21 |
백준 4179 불! (파이썬) (0) | 2020.02.21 |
백준 9328 열쇠 (파이썬) (0) | 2020.02.21 |
백준 16236 아기 상어 (파이썬) (0) | 2020.02.21 |
Comments