Durante la sua attività giornalistica, Mino incappa in uno scoop.
Ha infatti scoperto l’esistenza di un’associazione che fu fondata e composta da due membri che si conoscevano direttamente.
Tutti gli altri membri furono successivamente reclutati se conoscevano direttamente uno o due garanti facenti già parte dell’associazione.
Mino è riuscito a ricostruire la genesi dell’attuale associazione.
Numerati i suoi membri da 1 a N, ha scritto sul suo taccuino una serie di M coppie di interi.
In particolare, la coppia composta da due interi (I,J) indica che I ha garantito per J o viceversa.
Infatti, Mino non è riuscito a stabilire chi dei due sia entrato per primo nell’associazione: sia (I,J) che (J,I) rappresentano la stessa coppia, anche perché l’ordine di numerazione dei membri non riflette necessariamente quello dell’iscrizione all’associazione (per esempio, non è detto che i membri numero 1 e 2 siano stati i fondatori o che il membro numero N sia l’ultimo arrivato).
Lo scoop di Mino consiste nell’aver trovato le prove di azioni criminali da parte di alcune triadi all’interno dell’associazione.
Una triade è composta da tre membri I, J e K dell’associazione, tali che le coppie (I,J), (I,K) e (J,K) sono tutte presenti nel taccuino di Mino (è lecito supporre che i membri di una triade si siano aiutati reciprocamente, in un qualche ordine, per entrare nell’associazione).
Per stimare il numero di controlli che Mino deve effettuare, aiutatelo a contare efficientemente quante triadi in tutto contiene l’associazione, basandovi sulle coppie trascritte nel suo taccuino e sulla modalità di reclutamento di nuovi membri: per entrare nell’associazione occorre avere conoscenza diretta di uno o due garanti che ne siano già membri.
Dati in Input
Il file input.txt è composto da M+1 righe.
- La prima riga contiene due interi positivi M e N separati da uno spazio: M rappresenta il numero di coppie contenute nel taccuino di Mino e N il numero di membri dell’associazione.
Tali membri sono numerati da 1 a N. - Le successive M righe rappresentano le coppie nel taccuino: ciascuna riga è composta da due interi differenti I e J, separati da uno spazio, per indicare la coppia (I,J).
Dati in Output
Il file output.txt è composto da una sola riga contenente un intero non negativo che rappresenta il numero totale di triadi in seno all’associazione.
Assunzioni
- 1 ≤ N ≤ 100000
- N-1 ≤ M ≤ 2N-3
- 1 ≤ I, J ≤ N
- Non esistono due righe in input che rappresentano la stessa coppia.
Notare che (I,J) = (J,I), per cui non è possibile trovarle entrambe in input.
Esempi
input.txt | output.txt | |
---|---|---|
1 | 3 4 4 2 1 3 3 4 |
0 |
2 | 13 8 4 2 8 3 1 2 8 5 6 8 4 8 7 2 6 7 2 8 7 4 8 1 5 6 3 2 |
5 |
Note
- L’ordine con cui si considerano i membri per definire una triade è irrilevante: per esempio, sia 2, 4, 7 che 4, 7, 2 definiscono la stessa triade e, pertanto, essa deve essere conteggiata una volta soltanto.