CF1255C Liga de Leesins (teoría de grafos)

Significado de las preguntas:

Da N-2 trillizos, trillizos de secuencias internas que han sido interrumpidas, mientras que la secuencia entre las diferentes tripletes también están molestos, lo que reduce la secuencia de usted!

solución:

Mapear la construcción, dentro de cada lado de triple acumulación de dos grupos, a continuación, contar el número de ocurrencias de cada elemento en todos los grupos.

No es difícil de encontrar, no ha habido una sola vez debe ser el inicio o el final.

Después de determinar el punto de partida, el punto de inicio de la poligonal conectados, aparece dos veces es el segundo punto.

Después de determinar los dos puntos antes del punto de tiempo desde el primer punto dónde encontrar el nodo conectado no es accesible, se determina tercer nodo, y a continuación, empuje hacia atrás los dos primeros puntos, el procesamiento de bucle.

Pensando + teoría de grafos, no tienen que hacer frente a ...

#include <bits / STDC ++ h.>
 usando  espacio de nombres std;
const  int maxN = 1E5 + 100 ; 
vector < int > g [maxN]; 
mapa < int , int > pos;
int visita [maxN];
int main () {
     int N; 
    scanf ( " % d " , y N);
    para ( int i = 1 ; i <= N- 2 ; i ++ ) {
         int x, y, z; 
        scanf ( " % d% d% d" , Y x, y y, y z); 
        g [x] .push_back (y), g [x] .push_back (z); 
        g [y] .push_back (x), g [y] .push_back (z); 
        g [z] .push_back (y), g [z] .push_back (x); 
        pos [x] ++, pos [Y] ++, pos [Z] ++ ; 
    } 
    int F1;
     para (f1 = 1 ; f1 <= N; f1 ++ ) 
         si (pos [F1] == 1 ) descanso ;
     int f2;
     si (pos [g [F1] [ 0 ]] == 2 ) 
        f2 = g [F1] [ 0 ];
     demás  
        f2 = g [F1] [ 1]; 
    visita [F1] = 1 ; 
    visita [F2] = 1 ; 
    printf ( " % d% d " , f1, f2);
    para ( int i = 1 ; i <= N- 2 ; i ++ ) {
         int f3;
        para ( int j = 0 ; j <g [F1] .size (); j ++ ) 
             si (! visita [g [F1] [j]]) { 
                f3 = g [F1] [j];
                romper ; 
            } 
        Visita [F3] = 1 ;
        printf ( " % d " , f3); 
        f1 = f2, f2 = f3; 
    } 
}

 

Supongo que te gusta

Origin www.cnblogs.com/zhanglichen/p/12636470.html
Recomendado
Clasificación