当前位置: 首页 > news >正文

PAT甲级-1122 Hamiltonian Cycle

题目

题目大意

给定一个图和几组顶点,判断每组顶点是否能构成一个哈密顿回路

知识点

哈密顿回路满足几点要求:构成一个封闭环,并且经过所有顶点,每个顶点经过一次。

即满足第一个顶点值和最后一个顶点值相等;只有一个重复的顶点;非重复顶点数有n(图的总顶点数)个;连通图。

set集合可存放互不重复的数据,并且自动从小到大排序。

思路

图用一个邻接矩阵来表示,数据结构是二维数组。然后按照哈密顿回路的构成要求模拟即可。计算非重复顶点数目可以将其放入set集合中,用.size()即可。

代码

#include <iostream>
#include <vector>
#include <set>
using namespace std;int n, m, k;
int g[201][201] = {0};int main(){cin >> n >> m;for (int i = 0; i < m; i++){int v1, v2;cin >> v1 >> v2;g[v1][v2] = g[v2][v1] = 1;}cin >> k;for (int i = 0; i < k; i++){int num;cin >> num;vector<int> v(num);set<int> st;bool flag1 = false, flag2 = true;for (int i = 0; i < num; i++){int vi;cin >> vi;v[i] = vi;st.insert(vi);}if (st.size() == n && n == num - 1 && v[0] == v[num - 1]){flag1 = true;}  // 环,包括全部节点,只有一个重复节点,首尾节点相同for (int i = 0; i < num - 1; i++){if (g[v[i]][v[i + 1]] == 0){flag2 = false;}  // 所有的节点是否都能连通}flag1 && flag2 ? cout << "YES" << endl : cout << "NO" << endl;}return 0;
}

 

http://www.lryc.cn/news/455737.html

相关文章:

  • Java 插入排序
  • 随机掉落的项目足迹:Vue3中vite.config.ts配置代理服务器解决跨域问题
  • C++笔记之标准库和boost库中bind占位符_1的写法差异
  • 二分查找
  • 关注、取关、Redis实现共同关注、 博客推送与分页查询
  • 专业高清录屏软件!Mirillis Action v4.40 解锁版下载,小白看了都会的安装方法
  • 胤娲科技:AI重塑会议——灵动未来,会议新纪元
  • Python画笔案例-080 绘制 颜色亮度测试
  • MATLAB工具库:数据统计分析工具MvCAT、MhAST等
  • 角色动画——RootMotion全解
  • 加密软件的桌面管理系统有什么?
  • 【stm32】寄存器(stm32技术手册下载链接)
  • django的路由分发
  • 《贪吃蛇小游戏 1.0》源码
  • 初入网络学习第一篇
  • (项目管理系列课程)项目规划阶段:项目范围管理-收集需求
  • SQl注入文件上传及sqli-labs第七关less-7
  • 想成为月薪过万的软件测试工程师?快看过来!
  • 找生网站方案———未来之窗行业应用跨平台架构
  • 全网都在找的Python生成器竟然在这里!简单几步,让你的代码更简洁、更高效!
  • 插入排序,希尔排序,和归并排序
  • Prompt 模版解析:诗人角色的创意引导与实践
  • zookeeper选举kafka集群的controller
  • 吉如一线段树:区间最值和历史最值
  • 数据库常见的安全特性有哪些
  • Debezium日常分享系列之:Debezium 3.0.0.Final发布
  • MVCC(多版本并发控制)
  • 低代码可视化-uniapp响应式数据data-代码生成器
  • 10.7学习
  • 基础算法之前缀和--Java实现(下)--LeetCode题解:-和为 K 的子数组 - 和可被 K 整除的子数组 -连续数组-矩阵区域和