[HDU - 1272]小希的迷宫
基础并查集
要注意的点就是成环和空集,成环即Union拥有相同的根的两个点必然就会成环,此时是输出“NO”的。
而空集是要输出“YES”的。
#include <bits/stdc++.h> using namespace std; int ok; int fa[100000 + 10]; int vis[100000 + 10]; int Find(int a) { int r=a; while(fa[r]!=r) r=fa[r]; int i=a; int j; while(i!=r) { j=fa[i]; fa[i]=r; i=j; } return r; } void merge(int a,int b) { int A,B; A=Find(a); B=Find(b); if(A!=B) fa[B]=A; else ok=1; } int main() { int temp1, temp2; while (~scanf("%d %d", &temp1, &temp2)) { if(temp1==0&&temp2==0) { printf("Yes\n"); continue; } if (temp1 + temp2 == -2) break; ok = 0; int a = temp1, b = temp2; for (int i = 1; i <= 100000; i++) { fa[i] = i; vis[i] = 0; } merge(a, b); vis[a] = 1; vis[b] = 1; int flag = 0; while (scanf("%d %d", &a, &b)) { if (!a && !b) break; vis[a] = 1; vis[b] = 1; merge(a,b); } if (ok) { printf("No\n"); continue; } int total = 0; for (int i = 1; i <= 100000; i++) if (vis[i] && fa[i] == i) total++; if (total != 1) printf("No\n"); else printf("Yes\n"); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人