N(N>=2)阶竞赛图构造哈密顿通路

N阶竞赛图:含有N个顶点的有向图,每对顶点之间都有一条边。对于N阶竞赛图一定存在哈密顿通路。

证明及原理

然后,又有题目中给出的就是一个竞赛图,所以我们可以直接推理哈密顿通路即可,时间复杂度

讲解写在注释里了。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <unordered_map>
#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxN = 1e2 + 7;
int ans[maxN], mp[maxN][maxN], N;
inline void Insert(int &len, int l, int r)    //The ans[] length is len, insert key befor arv[index]
{len++;for(int i=r; i>=l; i--){ans[i + 1] = ans[i];}ans[l] = len;
}
void Hamilton()
{int have_node = 0;ans[++have_node] = 1;for(int i = 2; i <= N; i++) //插入点i{if(mp[ans[have_node]][i]) ans[++have_node] = i; //第一种情况,直接把当前点添加到序列末尾else{bool flag = false;for(int j = have_node - 1; j; j--)   //在当前序列中,从后往前找到第一个满足条件的点j,使得存在<Vj,Vi>且<Vi, Vj+1>.{if(mp[ans[j]][i])  //找到后把该点插入到序列的第j + 1个点前.{flag = true;Insert(have_node, j + 1, have_node);break;}}if(!flag) Insert(have_node, 1, have_node);    //否则说明所有点都邻接自点i,则把该点直接插入到序列首端.}}
}int main()
{int t; scanf("%d", &t);while(t--){scanf("%d", &N);memset(mp, 0, sizeof(mp));int M = N * (N - 1) / 2;for(int i = 0; i < M; i++){int u, v;scanf("%d%d", &u, &v);mp[u][v] = 1;}Hamilton();for(int i = 1; i <= N; i++) printf(i == 1 ? "%d":" %d", ans[i]);printf("\n");}return 0;
}

Strange Country II 【ZOJ - 3332】【竞赛图求解哈密顿通路】相关推荐

  1. 哈密顿图 哈密顿回路 哈密顿通路(Hamilton)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5452580.html 概念: 哈密顿图:图G的一个回路,若它通过图的每一个节点一次,且仅一次,就是哈密顿回路.存在哈密顿回 ...

  2. 算法学习---关于哈密顿图的哈密顿通路求解问题

    之前以自己一渣渣之身参加了一个比赛,果然连门槛都没摸到,虽然略有沮丧不过还是得到了很多思考哒,这里记一下. 因为之前没有接触过算法,感觉这个可能也只是能够解决问题,效率极低,先记下来以后有兴致慢慢优化 ...

  3. 最短哈密顿路matlab,SHP-VI: 一种基于最短哈密顿通路的POMDP值迭代算法

    摘要:基于试探(trial-based)的值迭代算法是求解部分可观察Markov决策过程(partially observable Markov decision process,POMDP)模型的一 ...

  4. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  5. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  6. 一系列图论问题[转]

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  7. 图论练习题(存起来练)

    =============================以下是最小生成树+并查集======================================  [HDU]  1213 How Man ...

  8. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

  9. 哈密顿回路、链路、竞赛图

    目录 一,哈密顿回路.哈密顿链路 二,Dirac定理 三,算法 力扣 996. 正方形数组的数目 力扣 980. 不同路径 III 四,竞赛图 五,相关puzzle 1,数字满格 2,马的哈密顿回路. ...

  10. 【算法笔记】竞赛图(有向完全图)(相关题型总结)

    整理的算法模板合集: ACM模板 目录 竞赛图(有向完全图) 一.兰道定理 例题HDU 5873 Football Games 二.求竞赛图的任意三元环 三.求竞赛图的哈密顿回路数量的期望 竞赛图(有 ...

最新文章

  1. PetShop之表示层设计 - 《解剖PetShop》系列之六
  2. Centos7 上安装Docker
  3. 全球 PC 应用程序有半数已过期未更新
  4. Swift学习笔记(8)--函数
  5. Buuctf(PWN)ciscn_2019_c_1
  6. C语言二叉树总和等于k的所有路径的算法(附完整源码)
  7. 无重复字符的最长子串—leetcode3
  8. php 前往页面,PHP实现网页截图?
  9. simulink 解析udp数据_DNS 支持 TCP 和 UDP 双协议,但为何偏偏只钟情 UDP?
  10. C# OpenTK教程 - 1.1 创建窗口
  11. 【华为云技术分享】敏捷实践:一周的Sprint太短,可以调吗
  12. h5物体拖动_html5实现拖拽效果
  13. bzoj 2844 子集异或和名次
  14. linux oracle查看服务,技术|如何查看 Linux 中所有正在运行的服务
  15. CodeBlocks配置openGL教程
  16. 03 三维地图添加切片图层
  17. Latex表格一格内换行
  18. python画简便的图片-用python简单处理图片(5):图像直方图
  19. netty 远程主机强迫关闭了一个现有的连接。
  20. 朋友圈加粗字体数字_微信更新!朋友圈评论能发表情包,结果变成沙雕狂欢

热门文章

  1. 【CVPR2020】计算机视觉与模式识别会议论文完全清单_Part1
  2. this.el_.vjs_getProperty is not a function
  3. 吉林省教育学院学报杂志社吉林省教育学院学报编辑部2022年第9期目录
  4. 3DES实现加密算法
  5. 除了PS,这几款设计软件也是我的最爱
  6. 双下划线一粗一细怎么加_word 下划线 一粗一细
  7. IM 产品设计思考(4)- 问答机器人
  8. c51单片机超声测距hcsr04在 rtos运行的 实验 基于陈明计先生的smallrtos
  9. 微信朋友圈点赞生成器
  10. 如何理解掩码、反掩码、通配符