Otro problema de Grafo


Submit solution

Points: 100 (partial)
Time limit: 3.0s
Memory limit: 256M

Authors:
Problem type
Allowed languages
Ada, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Prolog, Python, Swift, VB

Dado un grafo dirigido con N vertices y M aristas. Se dice que una arista (u,v) es verdadera si todo camino que va de u a v (en nuestro grafo) pasa por esta arista. Dado un vertice E, llamemosle fin, haya el conjunto de vertices S, tal que B pertenece a S si y solo si (B,E) es una arista verdadera.

Entrada

La primera linea tendra la cantidad de casos T(1\leq T\leq10^5) a analizar. Cada caso inicia con los enteros N(1 \leq N \leq 10^5), M (0 \leq M \leq 10^5) y E (1\leq E \leq N) separados por espacios, especificando la cantidad de vertices del grafo, la cantidad de aristas y el vertice fin. Las siguientes M lineas describen las aristas del grafo por los enteros u_i y v_i(1 \leq u_i,v_i \leq N), denotando que la aristas (u_i,v_i) pertenece al grafo, no se daran aristas multiples, ni autoaristas (u_i=v_i). Se garantiza que la suma de los N y la suma de los M para cada juego de datos van a ser menores o iguales que 2*10^5.

Salida

Por cada caso se deben imprimir dos lineas. La primera de estas lineas debe tener el tamaño de S y la segunda linea debe tener los vertices que pertenecen a S separados por un espacio y ordenados ascendentemente. Si la cantidad de vertices en S es 0 debe dejar la segunda linea vacia.

Ejemplo Entrada

3
3 3 3
1 2
1 3
2 3
3 3 1
1 2
1 3
2 3
6 8 3
1 2
1 3
2 3
3 1
3 4
4 5
5 3
3 6

Ejemplo Salida

1
2
0

2
2 5

Subtareas

1 - N \leq 1000, M \leq 1000, la suma de todos los N y la suma de todos los M para cada caso son menores o iguales que 5000, vale 30pts

2 - El grafo es un DAG, o sea no hay ciclos, vale 30pts

3 - Sin restricciones, vale 40pts


Comments

There are no comments at the moment.