博客
关于我
PAT---A1122 Hamiltonian Cycle
阅读量:635 次
发布时间:2019-03-14

本文共 1298 字,大约阅读时间需要 4 分钟。

题意

给出一个无向图, n个顶点(顶点id从1开始), m条边.

输入k组顶点集, 判断是否为Hamiltonian cycle.

Hamiltonian cycle: a simple cycle that contains every vertex in a graph.

思路

判断Hamiltonian cycle:

  • 该顶点集一定包含n+1个顶点
  • 首尾一定相等
  • 连通性检查

Sample Input:

6 106 23 41 52 53 14 11 66 31 24 567 5 1 4 3 6 2 56 5 1 4 3 6 29 6 2 1 6 3 4 5 2 64 1 2 5 17 6 1 3 4 5 2 67 6 1 2 5 4 3 1

Sample Output:

YESNONONOYESNO
#include "bits/stdc++.h"using namespace std;const int N = 210;int G[N][N];int main(){//     freopen("input.txt","r",stdin);    int n, m; cin >> n >> m;    for (int i = 0; i < m; ++i) {        int a, b; scanf("%d%d",&a,&b);        G[a][b] = G[b][a] = 1;    }    int k;  cin >> k;    for (int i = 0; i < k; ++i) {        int num;  scanf("%d",&num);        if (num != n+1) {            printf("NO\n");            string s; getline(cin,s);            continue;        }        vector
a(num); set
cnt; for (int j = 0; j < num; ++j) scanf("%d",&a[j]),cnt.insert(a[j]); if (a.back() != a.front() || cnt.size() != n) { printf("NO\n"); continue; } bool ok = true; for (int j = 1; j < num; ++j) { if (!G[a[j]][a[j-1]]) { ok = false; break; } } if (ok) printf("YES\n"); else printf("NO\n"); }}

转载地址:http://bzhoz.baihongyu.com/

你可能感兴趣的文章
mysql解压没有data_Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)...
查看>>
Mysql解压版安装
查看>>
Mysql设置字符编码及varchar宽度问题
查看>>
MySQL设置白名单限制
查看>>
MySQL设置远程连接
查看>>
MySQL详解:索引的介绍和原理分析
查看>>
MYSQL语句。
查看>>
MySQL调大sort_buffer_size,并发量一大,查询排序为啥又会变慢
查看>>
Mysql账号权限查询(grants)
查看>>
MYSQL输入密码后闪退的解决方法
查看>>
MySQL迁移到达梦:如何轻松、高质量完成迁移任务
查看>>
mysql返回的时间和实际数据存储的时间有误差(java+mysql)
查看>>
mysql还有哪些自带的函数呢?别到处找了,看这个就够了。
查看>>
Mysql进入数据库
查看>>
mysql进阶 with-as 性能调优
查看>>
mysql进阶-查询优化-慢查询日志
查看>>
wargame narnia writeup
查看>>
MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)
查看>>
Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
查看>>
Mysql连接时报时区错误
查看>>