[위상 정렬] 문제로 이해하는 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바