máscaras del desgaste del trabajo [B] Week6!

título Descripción

neumonía coronavirus Novel (virus de la corona de Enfermedades 2019, COVID-19), referido como "el nuevo neumonía corona" se refiere a la 2019 novela infección por coronavirus causada por neumonía.

Si una persona infectada en un grupo, entonces este grupo necesidad de aislarse!

Un pequeño estudiante se le diagnosticó la infección nueva corona, y no usa una máscara! ! ! ! ! !

Riesgo! ! !

El tiempo se acaba! ! ! !

Necesidad de encontrar lo más rápidamente posible a todos los estudiantes y pequeña Un contacto directo o indirecto a través de los estudiantes, que será aislado para evitar la propagación de una gama más amplia.

Como todos sabemos, la comunicación de los estudiantes pueden estar en grupos pequeños, un estudiante también puede participar en varios grupos pequeños.

Por favor, escriba un programa para resolver! Use una máscara! !

Introduzca una descripción

Una pluralidad de conjuntos de datos, para cada conjunto de datos de prueba:

Los dos primeros actos de números enteros n y m (n = m = 0 indica el final de la entrada, sin tratamiento), n es el número de estudiantes, m es el número de grupos de estudiantes. 0 <n <= 3E4, 0 <= m <= 5E2

Estudiante número 0 ~ n-1

Un pequeño número es 0

Entonces, m líneas, cada persona tiene un número de pequeños grupos es decir, enteros num. Seguido de un num entero que representa los estudiantes en pequeños grupos.

Especificaciones de salida

El número de salida a ser aislado, la respuesta a la salida de cada de datos por línea

Ejemplo de entrada

100 4
2 1 2
5 10 13 11 12 14
2 0 1
2 99 2
200 2
1 5
5 1 2 3 4 5
1 0
0 0

Ejemplo de salida

4
1
1

pensamiento

Se utiliza aquí y comprobar el conjunto de ideas, si el contacto directo o indirecto con el estudiante, el proceso de los estudiantes fusión, los estudiantes del primer conjunto de un mismo grupo es el mismo, si hay dos grupos de estudiantes de intersección, a continuación, los dos conjuntos combinados, al mismo tiempo, cada registro el número de estudiantes en la colección, el resultado final del conjunto, donde el número de estudiantes 0 estudiantes puede ser.
Para una pluralidad de conjuntos de datos de entrada, un conjunto de datos de procesamiento requerida antes de cada uno de disjuntos-set proceso de inicialización.

código

#include <iostream>
#include<string.h>
using namespace std; 
const int size=3e4+10;
int v[size];
int number[size];
void ini(int n)
{
	for(int i=0;i<n;i++)
		v[i]=i,number[i]=1;
}
int find(int n)
{
	return v[n]==n?n:v[n]=find(v[n]);
}
bool unite(int a,int b)
{
	int fa=find(a),fb=find(b);
	if(fa==fb)
	{
		return false;
	}
	else
	{
		if(number[fa]<number[fb])swap(fa,fb);
		number[fa]+=number[fb];
		v[fb]=fa;
		return true;
	}
}

int main(int argc, char** argv) {
	int m,n;
	while(~scanf("%d%d",&n,&m)&&!(m==0&&n==0))
	{
		ini(n); 
		int sum=0;
		for(int i=0;i<m;i++)
		{
			int num,temp=-1;
			scanf("%d",&num);
			for(int j=0;j<num;j++)
			{
				int a;scanf("%d",&a);
				if(temp!=-1)unite(temp,a);
				temp=a;
			}	
		}
		printf("%d\n",number[find(0)]);
	}
	
	return 0;
}
Publicado 24 artículos originales · ganado elogios 8 · visitas 522

Supongo que te gusta

Origin blog.csdn.net/weixin_44034698/article/details/105161915
Recomendado
Clasificación