아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

ICPC, 다시 파업하다

시간 제한1초메모리 제한128 MB

요약
작업 의존 관계 DAG와 각 작업의 기본 중요도, 작업을 수행하는 직원 정보가 주어질 때, 직원이 수행하는 작업 중 다른 수행 작업에 의존하지 않는 작업들의 중요도 합으로 급여를 계산한다.
난이도

보통10점 중 6점

유형
그래프, DFS, 위상 정렬, 동적 계획법
정답자
아직 제출이 없습니다

문제

International Concrete Projects Company(ICPC)는 고급 주택 시장을 전문으로 하는 건설 회사이다. 작년부터 주택 개발 사업에 사용해 온 매우 효율적인 토지 분할 기법 덕분에, ICPC는 세계에서 가장 수익성이 높은 회사가 되었다.

최근 ICPC에 큰 혼란이 있었다. 직원들이 급여가 충분하지 않다며 일하기를 거부한 것이다. 파업으로 인한 이익 손실을 걱정한 이사회는 새로운 급여 계산 방식을 제안했고, 다행히 모두가 이를 받아들였다.

직원의 급여는 그가 수행하는 작업들의 중요도를 반영하며, 이 중요도는 작업들이 서로 어떻게 의존하는지에 따라 달라진다.

작업 XX가 작업 YY에 의존한다는 것은, (i) XX가 YY에 직접 의존하거나, (ii) 어떤 작업 ZZ가 존재하여 XX가 ZZ에 직접 의존하고 그 ZZ가 다시 YY에 의존하는 경우를 말한다. ICPC에서는 모든 작업이 반드시 수행되어야 하므로, 의존 관계에는 순환이 존재하지 않는다. 또한 하나의 작업을 여러 명의 직원이 수행할 수도 있다.

각 작업에는 그 중요성을 나타내는 기본 중요도가 있다(예를 들어 효율적인 토지 분할 기법을 개발하는 일은 실제로 집을 짓는 일보다 더 중요하다). 작업 TT의 중요도는 TT의 기본 중요도에, TT에 직접 의존하는 모든 작업의 중요도를 더한 값으로 정의된다. 특히 어떤 작업도 TT에 직접 의존하지 않는다면, TT의 중요도는 기본 중요도와 같다.

직원의 급여는, 그 직원이 수행하는 작업들 중에서 그 직원이 수행하는 다른 어떤 작업에도 의존하지 않는 작업들의 중요도를 모두 더한 값이다. 다시 말해, 직원 WW가 작업 XX를 수행할 때, WW가 함께 수행하면서 XX가 의존하는 다른 작업 YY가 존재하지 않는 경우에만 XX의 중요도가 WW의 급여에 더해진다.

각 직원의 급여를 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 두 정수 TT와 EE가 주어지며, 각각 작업의 수와 직원의 수이다(1≤T≤10001 \le T \le 1000, 1≤E≤10001 \le E \le 1000). 작업은 11번부터 TT번까지, 직원은 11번부터 EE번까지 번호가 매겨져 있다.

그다음 작업 11번부터 TT번까지의 설명이 번호 순서대로 주어진다. 각 작업은 두 줄로 설명된다. 첫 줄에는 세 정수 BSBS, NDND, NENE가 주어지며, 각각 그 작업의 기본 중요도, 그 작업에 직접 의존하는 작업의 수, 그 작업을 수행하는 직원의 수이다(1≤BS≤10001 \le BS \le 1000, 0≤ND<T0 \le ND < T, 1≤NE≤E1 \le NE \le E). 둘째 줄에는 ND+NEND + NE개의 정수가 주어지는데, 먼저 이 작업에 직접 의존하는 NDND개의 작업 번호가, 이어서 이 작업을 수행하는 NENE명의 직원 번호가 나온다.

입력의 끝은 T=E=0T = E = 0인 줄로 표시되며, 이 줄은 처리하지 않는다.

출력

테스트 케이스는 주어진 순서대로 답해야 한다. 각 테스트 케이스마다 다음을 출력한다.

  • 케이스의 시작을 나타내는, 별 다섯 개 *****로 이루어진 한 줄
  • 각 직원 ii에 대해, 두 정수 ii와 ss를 공백 하나로 구분하여 한 줄에 출력한다. 이는 직원 ii의 급여가 ss임을 의미한다.

예제3

  1. 예제 1

    입력
    3 2
    100 2 2
    2 3 1 2
    40 0 1
    1
    60 0 1
    2
    7 2
    10 2 1
    2 3 1
    10 2 1
    4 5 2
    10 2 1
    6 7 2
    10 0 1
    1
    10 0 1
    1
    10 0 1
    1
    10 0 1
    1
    0 0
    
    예상 출력
    *****
    1 200
    2 200
    *****
    1 70
    2 60
    
  2. 예제 2

    입력
    1 1
    5 0 1
    1
    0 0
    
    예상 출력
    *****
    1 5
    
  3. 예제 3

    입력
    2 3
    10 1 1
    2 1
    20 0 1
    2
    0 0
    
    예상 출력
    *****
    1 30
    2 20
    3 0