PAT B -1065 perro individual (25 puntos)

Haga clic en el enlace completo Resumen solución PAT B -AC

Título:
"El perro único" es el término chino de cariño para una sola persona. Esta pregunta puede encontrar huéspedes de la gran parte única de miles de personas con el fin de dar un cuidado especial.

Formato de entrada:
entrada de la primera fila se le da un número entero positivo N (≤ 50 000), es el número de conocida par / pareja, y luego N filas, cada fila se da un par / pareja - por conveniencia, cada correspondiente a un número de ID, los dígitos 5, entre el ID de la partición (de 00.000 a 99.999) por un espacio, después de un número entero positivo dado M (≤ 10 000), el número total de la parte; posteriormente da a los huéspedes la fila m la ID, separadas por un espacio. Tema asegurar que no los barcos bigamia o el pie.

Formato de salida:
En primer lugar, la línea de salida única de un primer número total de huéspedes; seguido de un segundo ID de línea se incrementa en el orden indicado en los huéspedes individuales. Con un espacio entre el ID de la partición, y la fila última puede no tener espacio extra.

de entrada de la muestra:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333

Resultado de muestra:

5
10000 23333 44444 55555 88888

Mi código:

#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<sstream>
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件

int main()
{
    int pairs[100010]={0};
    int member[100010]={0};
    int N;
    int num_dog=0;
    cin>>N;
    for(int i=0;i<N;i++)
    {
        int a,b;
        cin>>a>>b;
        if(a==0)a=100000;
        if(b==0)b=100000;
        pairs[a]=b;
        pairs[b]=a;
    }
    cin>>N;
    for(int i=0;i<N;i++)
    {
        int a;
        cin>>a;
        if(a==0)a=100000;
        member[a]=1;
    }
    //delete pairs
    for(int i=1;i<100000;i++)
    {
        if(member[i]&&member[pairs[i]])
        {
            member[i]=0;
            member[pairs[i]]=0;
        }
        else if(member[i])
        {
            num_dog++;
        }
    }

    printf("%d\n",num_dog);
    if(member[100000])
    {
        cout<<"00000";
        num_dog--;
        if(num_dog)cout<<" ";
    }
    for(int i=1;i<100000;i++)
    {
        if(member[i])
        {
            printf("%05d",i);
            num_dog--;
            if(num_dog)cout<<" ";
            else break;
        }
    }
    return 0;
}

Publicado 82 artículos originales · ganado elogios 1 · vistas 1670

Supongo que te gusta

Origin blog.csdn.net/qq_34451909/article/details/104914096
Recomendado
Clasificación