Una cubierta de vértice de un gráfico es un conjunto de vértices de tal manera que cada borde del gráfico es incidente a al menos un vértice del conjunto. Ahora bien, dada una gráfica con varios conjuntos de vértices, se supone que para saber si cada uno de ellos es una cubierta de vértices o no.
Especificación de entrada:
Cada archivo de entrada contiene un caso de prueba. Para cada caso, la primera línea da dos enteros positivos N y M (ambos no más de 10 ^ 4), siendo el número total de vértices y los bordes, respectivamente. Entonces M líneas siguen, cada uno describe un borde dando a los índices (de 0 a N-1) de los dos extremos del borde.
Después de la gráfica, se le da un número entero positivo K (<= 100), que es el número de consultas. A continuación, las líneas K de consultas siguen, cada uno en el formato:
NV v [1] v [2] ... v [NV]
donde Nv es el número de vértices en el conjunto, y v [i] 's son los índices de los vértices.
Especificación de la salida:
Para cada consulta, imprimir en una línea “Sí” si el conjunto es una cubierta de vértice, o “No” en caso contrario.
Ejemplo de entrada:
10 11
8 7
6 8
4 5
8 4
8 1
1 2
1 4
9 8
9 1
1 0
2 4
5
4 0 3 8 4
6 6 1 7 5 4 9
3 1 8 4
2 2 8
7 9 8 7 6 5 4 2
salida de muestra:
No
Sí
Sí
No
No
efecto de título
tapa Un vértice es un conjunto de puntos, uno para cada lado de la gráfica son el conjunto de puntos de acceso.
Siempre pregunte a preguntar si un determinado conjunto de tapa de vértice
El análisis de
registro en el lado de entrada al lado cuando se le preguntó acerca de desplazamiento
Registro de errores :
Mientras se adentraba en el borde for (int i = 0; i < m; i ++)
escrita en el malfor (int i = 0; i < n; i ++)
#include <bits/stdc++.h>
using namespace std;
int n, m;
const int maxn = 10010;
vector<int> v[maxn];
bool vis[maxn];
bool judge()
{
int num, u;
cin >> num;
for (int i = 0; i < num; i ++)
{
cin >> u;
for (auto x : v[u]) vis[x] = 1;
}
for (int i = 0; i < m; i ++)
if (!vis[i]) return false;
return true;
}
int main()
{
int a, b, k;
cin >> n >> m;
for (int i = 0; i < m; i ++)
{
cin >> a >> b;
v[a].push_back(i);
v[b].push_back(i);
}
cin >> k;
while (k --)
{
memset(vis, 0, sizeof vis);
judge()?puts("Yes"):puts("No");
}
return 0;
}