Logistika | 프로그래밍의 벗 PivotOJ
PivotOJ

Logistika

시간 제한: 15000ms메모리 제한: 1024MB출처: EIO 2016-17 openBOJ 30005

문제

Maailmakuulus tööstusfirma Universal Manufacturing otsustas hiljuti oma tegevust laiendada. Firma toodab palju erinevaid tooteid, lampidest traktoriteni, ja korraldab kogu tootmisprotsessi, toorainetest lõpliku tooteni, oma tehastes.

Firma NN tehast on nummerdatud 1N1 \ldots N, kusjuures tehas nr. 11 on peatehas. Tehased on oma\-vahel ühendatud N1N-1 teega ja on teada, et peatehasest on võimalik mööda neid teid pääseda kõigisse teistesse tehastesse.

Igal tehasel ii on oma tase TiT_i, mis tähendab et see tehas on võimeline koostama nii selle tasemega komponente teiste tehaste jaoks kui ka sama tasemega valmistooteid. Tehas võib sisendina kasutada suvalise madalama tasemega komponente, aga tulemusena saadud komponendi või toote tase on alati TiT_i.

Firma otsustas avada tehaste juures MM poodi, kus pood ii asub tehase CiC_i juuures ja võib müüa tooteid tasemetega LiRiL_i \ldots R_i. Valmistamisel läbib iga toode mingi tehaste jada (j1,j2,,jc)(j_1, j_2, \ldots, j_c), kus esialgsed komponendid valmistatakse tehases j1j_1, siis viiakse need tehasesse j2j_2, kus neist valmistatakse kõrgema taseme komponendid, mida omakorda töödeldakse edasi kuni tehaseni jcj_c, kus valmistatakse lõplik toode, mis transporditakse poodi. Baaskomponendid valmistatakse alati peatehases, seega j1=1j_1 = 1. Kuna iga tehas saab töödelda ainult madalama tasemega komponente, siis iga 1i<c1 \le i < c korral peab kehtima Tji<Tji+1T_{j_i} < T_{j_{i+1}}.

Kuna transport on kogu tootmisprotsessi kõige kallim osa, otsustati, et ühegi toote valmistamise käigus ei tohi toode ei komponentidena ega valmiskujul ühtki tehast korduvalt läbida (isegi kui toodet seal tehases ei töödelda). Kui mingi toote jaoks ei leidu poodi, kuhu ta nii müügile jõuda saaks, siis seda toodet poes ei müüda.

Universal Manufacturingi tööpakkumisi uurides panid Sa tähele, et neil on vaba väga hea palgaga tarkvarainseneri töökoht. Lisaks avastasid Sa, et nad kasutavad oma logistika planeerimiseks algoritmi, mis vaatab iga poe juures iga toote jaoks läbi kõik võimalikud tehaste jadad, millega seda toota saaks, ja siis valib neist selle, mis nende logistikavõrku kõige vähem koormab. Nutika programmeerijana taipasid kohe, et firma suure tehastevõrgu juures võib see algoritm joosta universumi lõpuni.

Sa soovid firmat veenda nende algoritmi ebaefektiivsuses (ja loodetavasti saada palgatud seda parandama). Selleks tuleb Sul kirjutada programm, mis arvutab iga poe jaoks, kui palju tehaste valikuid firma praegune algoritm läbi vaatab.

입력

Standardsisendi esimesel real on tehaste arv NN (1N1051 \le N \le 10^5). Teisel real on NN täisarvu P1PNP_1 \ldots P_N (1Pi<i1 \le P_i < i), kus PiP_i tähendab, et tehaste ii ja PiP_i vahel on tee (erandina P1=0P_1 = 0 ja ei esita teed). Kolmandal real on NN täisarvu T1TNT_1 \ldots T_N (0Ti<N0 \le T_i < N), mis näitavad tehaste tasemeid. On teada, et T1=0T_1 = 0 ja et kõik TiT_i väärtused on erinevad. Neljandal real on poodide arv MM (1M1051 \le M \le 10^5). Viimasel MM real on igaühel kolm täisarvu CiC_i, LiL_i ja RiR_i (1CiN1 \le C_i \le N ja 0LiRi<N0 \le L_i \le R_i < N), mis tähistavad et pood ii asub tehase CiC_i juures ja võib müüa tooteid tasemetega LiRiL_i \ldots R_i.

출력

Standardväljundi reale ii väljastada poele ii sobivate tootedete kõigile võimalikele tootmisprotsessidele vastavate tehasejadade koguarv. Kuna variante võib olla väga palju, väljastada tegeliku arvu asemel jääk, mis tekib selle jagamisel arvuga 109+710^9+7.

예제

예제 1

입력
8
0 1 2 2 4 2 1 7
0 7 5 1 3 6 4 2
4
5 1 4
8 2 4
6 1 4
2 1 7
출력
3
2
0
1
코드를 제출하려면 로그인하세요.