만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

뜨거운 감자 원리

시간 제한2초메모리 제한1024 MB

요약
노드 스케줄이 고정된 망에서 같은 틱에 두 패킷이 같은 노드에 머물지 않도록 목적지에 도달하는 패킷의 최대 개수를 구합니다.
난이도

보통10점 중 7점

유형
시뮬레이션, 그래프, 완전 탐색
정답자
아직 제출이 없습니다

문제

'뜨거운 감자' 원리는 네트워크에서 패킷을 라우팅하는 방법이다. 주된 장점은 라우팅 테이블이 필요 없고, 라우팅 중에 패킷을 분석할 필요가 없다는 것이다.

네트워크는 nn개의 노드로 이루어져 있고, 일부 노드 쌍은 네트워크 연결로 이어져 있다. 각 노드는 스케줄을 가진다. 노드 ii의 스케줄은 노드 번호의 수열 ai,0,ai,1,…,ai,li−1a_{i,0}, a_{i,1}, \ldots, a_{i, l_i - 1}이다. 네트워크는 다음과 같이 틱 단위로 동작한다.

틱 tt 동안 네트워크에는 여러 패킷이 있을 수 있다. 각 패킷은 출발 노드와 목적지 노드를 가지며, 틱 동안 어떤 노드에 머문다. 각 패킷에는 등장 시각이 있으며, 이 틱의 시작에 출발 노드에서 생성된다. 틱 tt 동안 패킷이 목적지 노드에 있으면, 패킷은 시각 tt에 배달된 것으로 보고 네트워크에서 사라진다. 그렇지 않으면 패킷은 노드 ai,t mod lia_{i, t \bmod l_i}로 전달되고, 다음 틱의 시작에 그곳에 도착한다. 어떤 틱의 시작에 여러 패킷이 같은 노드에 도착하면, 그 패킷들은 모두 파괴된다.

이 라우팅 원리의 주된 단점은 장점에서 비롯된다. 라우팅 테이블과 패킷 분석이 없으므로, 모든 패킷이 배달되도록 노드의 스케줄과 패킷의 등장 시각을 아주 신중하게 골라야 한다. 잘 골라도 모든 패킷을 배달하지 못하는 경우가 많다.

네트워크 설명과 패킷 집합이 주어진다. 각 패킷에 대해 배달을 시도할지 정할 수 있다. 네트워크가 동작하는 동안 선택한 패킷이 모두 배달되도록, 배달을 시도할 패킷의 최대 개수를 구한다.

입력

첫 줄에 노드 수 nn이 주어진다 (1≤n≤1001 \le n \le 100). 다음 nn줄은 노드를 설명한다. ii번째 노드는 먼저 스케줄 길이 lil_i가 주어지고, 이어서 lil_i개의 수 ai,0,ai,1,…,ai,li−1a_{i,0}, a_{i,1}, \ldots, a_{i,l_i-1}이 주어진다 (1≤li≤81 \le l_i \le 8, ai,j≠ia_{i,j} \ne i).

다음 줄에는 패킷 수 pp가 주어진다 (1≤p≤1001 \le p \le 100). 이어서 pp줄에 패킷이 하나씩 주어지며, 각 줄은 출발 노드 sis_i, 목적지 노드 did_i, 등장 시각 tit_i로 이루어진다 (si≠dis_i \ne d_i, 0≤ti≤10000 \le t_i \le 1000).

출력

첫 줄에 배달할 수 있는 패킷의 최대 개수 kk를 출력한다. 둘째 줄에는 배달할 수 있는 패킷의 번호 kk개를 출력한다. 패킷 번호는 입력에 주어진 순서대로 1부터 pp까지이다.

예제1

  1. 예제 1

    입력
    4
    2 2 3
    3 1 1 3
    3 4 4 2
    1 3
    3
    1 3 0
    3 1 2
    4 2 3
    
    예상 출력
    2
    2 3