[위상 정렬] 문제로 이해하는 topology sort

2023. 8. 10. 21:02·Computer Science/Algorithms

https://www.acmicpc.net/problem/1005

 

1005번: ACM Craft

첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부

www.acmicpc.net

 

 

import sys
from collections import deque
si = sys.stdin.readline

def topology_sort() :
    q = deque([])
    for i in range(1,n+1) :
        if indegrees[i] == 0 :
            q.append(i)
            dp[i] = times[i]
    while q :
        cur = q.popleft()
        for x in graph[cur] :
            indegrees[x] -= 1
            dp[x] = max(dp[x], dp[cur] + times[x])
            if indegrees[x] == 0 :
                q.append(x)

T = int(si())
for _ in range(T) :
    n,k = map(int,si().split())
    times = [0] + list(map(int, si().split()))
    dp = [0] * (n+1)
    indegrees = [0] * (n+1)
    graph = [[] for _ in range(n+1)]

    for _ in range(k) :
        u,v = map(int,si().split())
        graph[u].append(v)
        indegrees[v] += 1

    w = int(si())

    topology_sort()
    print(dp[w])

 

'Computer Science/Algorithms' 카테고리의 다른 글
  • [링크드 리스트] 링크드 리스트 뒤집기
  • [MST] BOJ 1197번: 최소 스패닝 트리
  • [최단 경로] 문제로 이해하는 dijkstra algorithm
  • Floyd's tortoise and hare algorithm
kimdozzi
kimdozzi
끝까지 포기하지 않으면, 내가 다 이겨!
  • kimdozzi
    도브로
    kimdozzi
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • Problem Solving (49)
        • Baekjoon (29)
        • Programmers (0)
        • LeetCode (17)
        • 삼성 유형 (2)
      • Computer Science (27)
        • Operating System (2)
        • Algorithms (13)
        • Network (6)
        • DataBase (6)
      • Backend (33)
        • JavaScript (0)
        • TypeScript (6)
        • Java (7)
        • Spring Boot (7)
        • Spring Security (6)
        • JPA (2)
        • Mybatis (1)
        • Junit5 (1)
        • Redis (3)
      • DevOps (14)
        • Git, Github (5)
        • docker (4)
        • AWS (3)
        • nginx (2)
      • etc (6)
        • IntelliJ (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 티스토리
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    imos법
    알고리즘
    CORS
    티스토리챌린지
    컨테이너
    인덱서블 타입
    점 업데이트
    interface
    구간 업데이트
    누적합
    python
    Bucket
    docker
    TypeScript
    AWS
    구간합
    오블완
    삼성기출
    세그먼트 트리
    PrefixSum
    오프라인 쿼리
    인터페이스
    타입스크립트
    파이썬
    인덱스 시그니처
    백준
    docker image
    온라인 쿼리
    segment tree
    도커
    S3
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kimdozzi
[위상 정렬] 문제로 이해하는 topology sort
상단으로

티스토리툴바