Laberinto resolver HDU 1272 informe pocas esperanzas de disjuntos-set

HDU 1272 Poca esperanza de solucionar el informe laberinto

Ideas de resolución de problemas: Este título no es difícil, pero hay hoyo local. Literal la comprensión del problema, sólo los antepasados ​​de resolución de la comparación de cada entrada de dos números, si no igual, a lo conectan, si son iguales, entonces debe ser un anillo, es decir, la producción de NO. Sin embargo, también más que eso, ya que el sujeto requiere, además, que cada nodo puede conectar los dos, no es bosques FIG, es decir, no puede tener dos nodos raíz. Piense en este momento sobre ella.
Aquí Insertar imagen Descripción

#include <stdio.h>
#include<iostream>
#include <algorithm>
#include<string.h>
#pragma warning(disable:4996)
#define mod 1000000007
#define ll unsigned long long
const int N = 100005;
using namespace std;
int father[N], visit[N];
int mx;
int mi;
int flag;
int find(int x)
{
	if (father[x] == x)
		return x;
	return father[x] = find(father[x]);
}
void judge()
{
	int cnt = 0;
	for (int i = mi; i <= mx; i++)
	{
		if (visit[i] && i == find(i))//不能有两个根节点
		{
			cnt++;
			if (cnt > 1)
			{
				flag = 1;
				return;
			}
		}
	}
}
int main()
{
	int a, b;
	for (int i = 1; i < N; i++)
	{
		father[i] = i;
	}
	mi = 1000010;
	while (scanf("%d%d", &a, &b))
	{

		if (a == -1 && b == -1)
		{
			return 0;
		}
		if (a == 0 && b == 0)
		{
			judge();
			if (flag)
			{
				printf("No\n");
			}
			else
			{
				printf("Yes\n");
			}
			for (int i = 1; i < N; i++)
			{
				father[i] = i;
			}
			memset(visit, 0, sizeof(visit));
			flag = 0;
			mx = 0;
			mi = 1000010;
			continue;
		}
		mx = max(mx, max(a, b));
		mi = min(mi, min(a, b));
		visit[a] = 1;
		visit[b] = 1;
		if (flag)
		{
			continue;
		}
		int fa = find(a);
		int fb = find(b);
		if (fa == fb)
		{
			flag = true;
			continue;
		}
		else
		{
			father[fa] = fb;
		}
	}
}

Publicado 64 artículos originales · ganado elogios 0 · Vistas 1440

Supongo que te gusta

Origin blog.csdn.net/weixin_45566331/article/details/105041423
Recomendado
Clasificación