2019CSP-J T4 piezas de mecanizado

Prefacio: cada vez que toma un grupo de CSP son pánico, regresó sólo para encontrar que realmente suficiente agua. / (O O O) / ~ (universal tiene que ir, miedo de colgar)

Usted puede ir a Baidu propia descripción del título.

El problema es fácil de ver (yo era la vida y la muerte no lo vi) es un número impar más corto (ciego del nombre), el significado general es que una posición para ser piezas singulares, y su vecino longitud singular y la posición de longitud no supere el nivel de la pieza se para proporcionar materias primas. (Imaginemos dos trabajadores a cada otras partes, la distancia desde el origen y el origen de grado piezas con piezas originales son los últimos que tienen una relación)

Podemos utilizar un mapa pre-construidos de la cadena a la estrella de ancho transversal, cada uno alcance un nuevo punto no debe juzgar la distancia es más corta búsqueda, es necesario recordar la distancia de la paridad 1 punto mínimo. Recuerde que no sólo son no, en el caso Nº 2, 1:00 a hacer la parte, desde su punto de 1 100 células de distancia, sin duda menos que tú. Sí, hay una gran poda de búsqueda, si este punto no se cambia de la paridad, que sigue encontrando ningún sentido, sin duda antes de estado a la cola, por lo que una directa abandonarla.

Un punto puede ser cualquier punto en el ciclo a una parte vecina, el valor inicial de un punto es desde el punto 0 1. (¿Por qué no 2, pero no hará que la parte de grado 0? Debido a la posición impar de otros requisitos de su propio punto de posiciones pares de conformidad a 1:00.)

La palabra tiene un lugar algo importante (junto a cualquier punto), el enfoque no es ninguna, es adyacente al punto, queremos sentencia especial, si no el número uno punto vecino, lo que de entrada salida 0. La distancia inicial por encima de la incluso 0 ni útil.

Puede ser maravilloso dando vueltas en círculos, el valor inicial de la paridad que se define ampliamente.

Algo así, antes de que la primera no puede ser encadenado a la mirada al blog estrellas compañeros

código:

#include <iostream> 
#include <cstdio> 
#include <algoritmo> 
#include <cola> 
#include <cmath> 
#include <cstring> 
using namespace std; 
cola <largo largo> bj; 
mucho, mucho shu = 1, un [100,005], p, n, m, z1, z2, ji [100,005], ou [100,005], f; 
struct hehe 
{ 
	larga larga w, NXT; 
} sz [200,005]; 
void add (largo, largo z1, z2 largo, largo) 
{ 
	sz [shu] .nxt = a [z1]; 
	sz [shu] .w = z2; 
	un [z1] = shu; 
	shu ++; 
} 
BFS void () 
{ 
	bj.push (1); 
	ou [1] = 0; 
	mientras que (bj.empty () = true!) 
	{ 
		larga larga bl = bj.front (); 
		bj.pop ();
		para (largo tiempo i = a [BL]; i = 0;! i = sz [i] .nxt) 
		{ 
			si (ou [BL] 1 <ji [sz [i] .w] || ji [BL] 1 <ou [sz [i] .w]) 
			{ 
				bj.push (sz [i] .w); 
			} 
			Ji [sz [i] .w] = min (ji [sz [i] .w], ou [BL] 1); 
			ou [sz [i] .w] = min (ou [sz [i] .w], ji [BL] 1); 
		} 
	} 
} 
Int main () 
{ 
	scanf ( "% LLD% LLD% LLD", y n, y m, y p); 
	para (largo tiempo i = 1; i <= 100.005; i ++) 
	{ 
		ji [i] = 99999999; 
		ou [i] = 99999999; 
	} 
	Para (largo tiempo i = 0; i <m; i ++) 
	{ 
		scanf ( "% LLD% LLD", y z1, z2 y); 
		añadir (z1, z2); 
		añadir (z2, z1); 
		si (z1 == 1 || z2 == 1) 
		{ 
			f = 1; 
		} 
	}
	BFS (); 
	para (largo tiempo i = 0; i <p;
		scanf ( "% LLD% LLD", y z1, z2 y); 
		si (f = 1!) 
		{ 
			cout << "No" << endl; 
			Seguir; 
		} 
		Si (ou [z1] <= z2 && z2% 2 == 0) 
		{ 
			cout << "Sí" << endl; 
			Seguir; 
		} 
		Si (ji [z1] <= z2 y z2% 2 == 1) 
		{ 
			cout << "Sí" << endl; 
			Seguir; 
		} 
		Cout << "No" << endl; 
	} 
	Return 0; 
}

 Probablemente fue estúpido.

 

Supongo que te gusta

Origin www.cnblogs.com/lichangjian/p/12572029.html
Recomendado
Clasificación