pat-1134

Una pregunta muy especial, presta atención a aprender la idea de usar hash

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
	int n,m,a,b,k,tempk,c;
	cin>>n>>m;
	int hash[m]={0};
	vector<int> v[n];
	for(int i=0;i<m;i++){
		cin>>a>>b;
		v[a].push_back(i);
		v[b].push_back(i);
	}
	cin>>k;
	for(int i=0;i<k;i++){
		cin>>tempk;
		int flag=0;
		fill(hash,hash+m,0);
		for(int j=0;j<tempk;j++){
			cin>>c;
			for(int q=0;q<v[c].size();q++){
				hash[v[c][q]]=1;
			}
		}
		for(int i=0;i<m;i++){
			if(hash[i]==0){
				printf("No\n");
				flag=1;
			break;//for循环输出完就要结束了注意加break(注意)	
			}
		}
		if(flag!=1) printf("Yes\n");
	}
	return 0;
}

para resumir

1. La idea de esta pregunta es usar el hash para almacenar el número de borde correspondiente a cada vértice y asignarlo nosotros mismos. Después de dar la consulta, podemos atravesar directamente el número de borde almacenado del vértice correspondiente y visitar una etiqueta.

Finalmente, recorra todos los números de los bordes para ver si hay alguno sin marcar.

2. Tenga en cuenta que después de la salida del bucle for, es necesario romper y la salida del bucle no debería ocurrir.

3. Configure la bandera local e insértela en una de las situaciones. Si algo sucede, después de que se completa la salida, el valor de la bandera cambia para controlar la salida de la otra situación. Similar a una clave, originalmente hay una clave, y la llave se quita después de que ocurre una. Sí, esa puerta naturalmente no se abrirá.

Inglés

 

 Preguntas para conocer la situación del etiquetado lateral autónomo

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_45359314/article/details/113010121
Recomendado
Clasificación