ZOJ3332-竞赛图中的哈密顿路
来源:互联网 发布:芒果tv软件下载 编辑:程序博客网 时间:2024/04/25 16:57
竞赛图:图中的任意两点间有且仅有一条有向弧连接
求竞赛图中的哈密顿路的算法:
首先,由数学归纳法可证竞赛图在n>=2时必存在哈密顿路;
(1)n=2时显然;
(2)假设n=k时,结论成立,哈密顿路为V1,V2,...,Vi,...,Vk;
现添加第k+1个结点,若存在弧<Vi,Vk+1>和弧<Vk+1,Vi+1>,则可得哈密顿回路V1,V2,...,Vi,Vk+1,Vi+1,...,Vk;
若不存在上述的vi,考虑到Vk+1与v1~vk的连通状况,则只有下面种原哈密顿路的情况:
1.所有的Vi(1<i<k)与Vk+1的弧的方向都是<Vi,Vk+1>,那么可得哈密顿回路V1,V2,...,Vi,...,Vk,Vk+1;
2.所有的Vi(1<i<k)与Vk+1的弧的方向都是<Vk+1,Vi>,那么可得哈密顿回路Vk+1,V1,V2,...,Vi,...,Vk;
3.存在一个中间结点m,使得所有的Vi(1<=i<=m)与Vk+1的弧方向为<Vk+1,Vi>,所有的Vj(m<j<=k)与Vk+1的弧的方向为<Vj,Vk+1>,这时依然可以构造哈密顿路 V1,V2,...,Vi,...,Vk,Vk+1;
(3)那么算法也显然了。
#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <algorithm>using namespace std;const int NN=110;int n,map[NN][NN];struct node{ int x; struct node *next;}*h;inline void clr(node *p){ node *pp; while (p) { pp=p; p=p->next; delete(pp); }}inline bool ok(int i,int j,int k){ return (map[i][j] && map[j][k]);}void solve(){ node *p1,*p2; clr(h); h=new node; h->x=0; h->next=NULL; for (int i=1; i<=n; i++) { p1=h; while (p1->next && !ok(p1->x,i,p1->next->x)) p1=p1->next; p2=new node; p2->x=i; p2->next=p1->next; p1->next=p2; } p1=h->next; for (int i=1; i<n; i++) { printf("%d ",p1->x); p1=p1->next; } printf("%d\n",p1->x);}int main(){ int cas,u,v; scanf("%d",&cas); while (cas--) { scanf("%d",&n); if (n==1) { printf("1\n"); continue; } for (int i=1; i<=n; i++) map[0][i]=true; for (int i=1; i<=n*(n-1)/2; i++) { scanf("%d%d",&u,&v); map[u][v]=true; map[v][u]=false; } solve(); } return 0;}
- ZOJ3332-竞赛图中的哈密顿路
- zoj 3332 竞赛图哈密顿路
- ZOJ 3332 Strange Country II(竞赛图中的哈密顿路)
- [TOJ]1151. Task Sequences [zoj]3332.Strange Country II --竞赛图的哈密顿路
- hduTour Route【竞赛图的哈密顿回路】
- poj1776Task Sequences【竞赛图的哈密顿路径】
- 1776 Task Sequences 竞赛图构造哈密顿路径
- 无向哈密顿图回路Dirac 定理证明和竞赛图为哈密顿通路的证明过程
- 哈密顿路问题
- 哈密顿路问题
- 欧拉图,哈密顿图
- poj2438 哈密顿图
- 哈密顿图
- 哈密顿图
- hdu 3414----竞赛图中找寻是否存在哈密顿回路
- poj1776 Task Sequences--竞赛图下的哈密顿通路+入门
- HDU 3414 Tour Route(竞赛图的哈密顿回路)
- hdu2181 哈密顿绕行世界问题 哈密顿图。。水题
- java_ant详解(转载)
- STL Vector remove()和erase()的使用
- 禁止删除销售订单
- mysql的grant用法
- Cron Expressions
- ZOJ3332-竞赛图中的哈密顿路
- ShellExecute函数
- hdu ACM Steps 1.1
- 2、Android Market简介&注册过程
- 我要学ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图
- eclipse和maven在生成报告的时候产生栈溢出
- Hiberante事务并发处理
- windbg+vmware+win7 内核
- 产品经理和开发工程师的“功与防”