Tibi este un pasionat al matematicii, dar și un artist talentat. În timpul școlii, el a învățat să lucreze cu intervale de numere, pe care le reprezintă vizual pe ciorne cu ajutorul unor segmente colorate și stilizate în diferite moduri pentru o mai bună întelegere a problemei pe care o rezolvă. După ce și-a terminat temele la matematică, pe ciornele sale au rămas o mulțime de segmente de diferite tipuri, fiecare reprezentând un interval închis între numerele din problemele rezolvate. Într-o zi, s-a uitat la ciornele sale și s-a gândit la o problemă pe care vă invită să o rezolvați:
Cerință
Se dă un număr de segmente diferite. Fiecare segment este definit de tipul său (), punctul de start () și punctul final (). Segmentul include toate punctele din intervalul , inclusiv, și îndeplinește condiția , unde este numărul total de tipuri diferite. Două segmente sunt considerate conectate dacă au cel puțin un punct comun și sunt de tipuri diferite. Ele fac parte din același grup dacă sunt conectate direct sau printr-o secvență de segmente conectate direct. Sarcina voastră este să determinați numărul de grupuri de segmente care se formează pe fiecare ciornă a lui Tibi.
Date de intrare
Fișierul de intrare segmente.in
conține pe prima linie un număr natural reprezentând numărul de cazuri de testare (de ciorne). Fiecare are următoarea structură:
- Prima linie a unui caz de testare conține două numere întregi și .
- Pe următoarele linii se va afla un triplet de forma (), definind al -lea segment din cazul de testare, unde .
Date de ieșire
Pentru fiecare dintre cazurile de testare, , afișați în fișierul de ieșire segmente.out
pe o linie separată numărul de grupuri pe care segmentele le formează în acel caz.
Restricții și precizări
- și pentru orice de la la .
- Este garantat că suma valorilor lui peste toate cazurile de testare (notăm cu ) nu depășește (toate ciornele lui Tibi nu au mai mult de de secvențe).
# | Punctaj | Restricții |
---|---|---|
1 | 4 | , |
2 | 6 | , |
3 | 8 | , |
4 | 12 | , |
5 | 16 | , |
6 | 24 | , |
7 | 12 | , |
8 | 18 | , |
Exemplu
segmente.in
3
6 3
1 2 5
2 4 9
1 7 12
1 11 15
3 14 18
3 17 20
4 4
1 1 4
3 2 7
4 5 7
2 8 10
7 2
2 3 8
1 13 13
1 1 4
2 5 7
1 8 11
1 10 13
2 12 14
segmente.out
3
2
3
Explicație
În acest caz se formează următoarele conexiuni:
- Segmentul , , este conectat direct cu segmentul , deoarece sunt de tipuri diferite și se intersectează pe intervalul (au măcar un punct comun).
- Segmentul , , este conectat direct cu segmentul , deoarece sunt de tipuri diferite și se intersectează pe intervalul (au măcar un punct comun).
- Segmentul și segmentul au o intersecție nevidă, însă sunt de același tip deci nu sunt conectate direct.
- Restul segmentelor nu au intersecție comună cu segmentele , și , astfel segmentele , și fac parte din același grup.
- Segmentul , , este conectat direct cu segmentul , deoarece sunt de tipuri diferite și se intersectează pe intervalul (au măcar un punct comun).
- Segmentul și segmentul au o intersecție nevidă, însă sunt de același tip deci nu sunt conectate direct.
- Restul segmentelor rămase nu au intersecție comună cu segmentele și , astfel segmentele și fac parte din același grup.
- Segmentul nu este conectat cu niciun alt segment deci formează singur o grupă.
Astfel, se formează un total de grupuri.