HDU 1272 小希的迷宫

传送门

这题主要就是点的数量不确定,另外如果图为空的话要输出YES,而且这题数据里没有 边数 = 点数 - 1 的有环非连通图(因为下面代码AC了),所以直接判断边和点的数量关系即可。


小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。

(19年5月8日)这题题意就是判断给定的图 是不是 (无向)无环连通图。“有”表示连通,“仅有”表示无环。

下面是无向图的四种情况。(总结

无环连通图有环连通图无环非连通图(每一个连通分量都是无环的)有环非连通图(至少有一个连通分量是有环的)
边数 = 点数 - 1边数 > 点数 - 1边数 < 点数 - 1(点数 - 边数 = 连通分量数,且连通分量数 > 1)左边三种情况都有可能

上述表格描述的是性质,不能作为判定依据(因为有第四点存在)。只不过这道题钻了空子,因为前三点是互斥的,可以用来判定。


#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <unordered_set>         // 不排序的set,仅有去重功能。需要额外头文件
using namespace std;

unordered_set<int> V;            // 结点集
int Edges_cnt;                   // 边的数量

void init()
{
	V.clear();
	Edges_cnt = 0;
}

int main()
{
	int a, b;
	init();
	for (; ~scanf("%d%d", &a, &b);)
	{
		if (a == -1) break;
		if (a == 0)
		{
			if (Edges_cnt + 1 == V.size() || Edges_cnt == 0)
				printf("Yes\n");               // 什么边都没有(图为空)也要输出Yes,否则会WA    
			else printf("No\n");

			init();
			continue;
		}
		Edges_cnt++;
		V.insert(a);
		V.insert(b);
	}

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值