Транзитивне Замикання#3330

Транзитивне Замикання

3 секунди
64 мегабайти
Дуже легка

У майже всіх тренуваннях ICPC одним із основних елементів, які потрібно вміти обчислювати (або навіть краще, знати напам'ять), є транзитивне замикання орієнтованого графа. Оскільки ця концепція є настільки фундаментальною, один професор пропонує вирішити цю задачу, використовуючи алгоритм Уоршалла. Як одне з бонусних завдань цього ICPC, ми хотіли б перевірити, чи дійсно учасники опанували цю техніку.

Дано орієнтований граф G = < V, E > з N = |V| вершинами (2 \leq N \leq 2500) та M = |E| ребрами (1 \leq M \leq 10000). Його транзитивне замикання є бінарним відношенням на таке, що дві вершини, та , пов'язані у , якщо існує орієнтований шлях від до . Орієнтований шлях - це послідовність ребер графа C_0C_1, C_1C_2, ..., C_{K-1}C_K така, що A = C_0 та B = C_K. Ваше завдання - обчислити .

Оскільки може бути дуже великим, ми вирішили спростити вихідні дані. Обчисліть кількість впорядкованих пар (X, Y), де не дорівнює , таких, що існує шлях від вершини до вершини у графі .

Вхідні дані

Перша строка вхідних даних містить ціле число (T \leq 10), що позначає кількість тестових випадків. Наступні строки описують кожен тестовий випадок у наступному форматі.

Перша строка тестового випадку складається з двох цілих чисел та . Кожна з наступних строк містить цілі числа, та , що позначають, що існує орієнтоване ребро від до . Вершини пронумеровані від до , і не буде повторюваних ребер у описі графа.

Вихідні дані

Для кожного випадку виведіть ціле число, що позначає кількість впорядкованих пар (X, Y), де не дорівнює , таких, що існує шлях від вершини до вершини .

Приклади

Приклад 1

Loading
Loading