POJ1776(哈密顿路径)】的更多相关文章

题目: http://poj.org/problem?id=1776 题意: 给出一个n*n的矩阵,若第i个任务做完之后可以做第j个任务,则矩阵的第i行第j列为1,否则为0.机器完成一项任务之后会自动转到下一个任务,否则机器会自动停止. 求出最少的启动次数,输出每次启动次数完成的任务个数和任务序列. 思路: 题目给出一个竞赛图(即任意两点之间有且仅有一条有向边的有向图),则竞赛图一定存在哈密顿路径.题目转化为求一条哈密顿路径. #include <cstdio> #include <st…
原创博客,转载请联系博主! 前言:几天前华为的这个软件精英(算法外包)挑战赛初赛刚刚落幕,其实这次是我第二次参加,只不过去年只入围到了64强(32强是复赛线),最后搞到了一个华为的一顶帽子(感谢交大lady快递寄过来!),今年小较了一把真,幸运地闯进了排行榜.(第17位的就是我们Team噢!耶鲁顾神很给力!)    所以呢,回到正题首先来看一下初赛赛题吧! 初赛赛题要求 已知有向图G的拓扑(结点V,边E)和V的一个子图V’,在G内求一条从start结点到end结点的路径,要求经过V’的所有结点并…
题意 有n个黑帮(gang),每个黑帮有siz[i]个人,黑帮与黑帮之间有有向边,并形成了一个竞赛完全图(即去除方向后正好为一个无向完全图).在很多年前,有一些人参与了一次大型抢劫,参与抢劫的人都获得了一个真金条. 在这些年间,不同的黑帮之间进行了交易.具体过程是: 在时刻i,假如有一条边是u->v,那么u帮派中的i mod siz[u]号如果有金条(无论真假),并且v帮的i mod siz[v]没有任何金条,那么u中的这个人就会向v中的这个人一个假金条. 经过无数年的交易之后,各个帮派的金条拥…
题目大意:给定一个 N 个点的无向图,点有点权,求从 0 号点走到 N-1 号点的最短哈密顿路径是多少. 题解:由于哈密顿路径的定义是每个顶点必须经过且仅能经过一次,因此,可用当前是否经过了这些点和当前在哪个点来表示出一个状态,则一共有 \(O(n2^n)\) 个状态.考虑转移方式,对于在 j 这个点的情况来说,可以从以下与 j 相邻的节点 k 转移来,k 必须满足在当前状态已经走到.因此,时间复杂度为 \(O(n^22^n)\). update at 2019.3.29 注意,由于状态转移方程…
题意: 给定n个点的有向完全图,希望通过其中n-1条边将n个点串起来(2<=n<=1000) 欧拉路径:经过所有边且只经过一次 哈密顿路径:经过所有点且只经过一次 思路: 本题条件特殊,有向完全图.构造法求解,将点插在head之前,tail之后,或head和tail之间(实际插在head后或tail前) #include <queue> #include <cstdio> #include <cstring> #include <iostream>…
题目链接 \(Description\) 给出一个n个点的有向图,任意两个点之间有且仅一条有向边.对于每个点v,求出从v出发的一条经过点数最多,且没有重复经过同一个点一次以上的简单路径. n<=2000 \(Solution\) 详细题解在这 竞赛图缩点后得到的拓扑图一定是一条链,因为竞赛图任意两点前后关系确定,所以只有一种拓扑序列 从前边强连通分量中的任意一点出来 都可以到达后边强连通分量的任意一点 因为竞赛图的每个强连通分量一定存在一条哈密顿回路 所以只需要求出每一个强连通分量的哈密顿回路,…
题目链接 BZOJ4727 题解 前置芝士 1.竞赛图存在哈密顿路径 2.竞赛图存在哈密顿回路,当且仅当它是强联通的 所以我们将图缩点后,拓扑排序后一定是一条链,且之前的块内的点和之后块内的点的边一定全都由前面指向后面 而每个块都是强联通的,所以我们从起点出发,一定能找到一条路径走完后面所有点 我们只需预处理出每个强联通块内的一条哈密顿回路,就可以求出答案了 现在问题转化成了求竞赛图的哈密顿回路 我们先求出一条哈密顿路径 哈密顿路径 从竞赛图中任意一个点出发向外扩展,维护一个链表 假若扩展到点\…
Rikka with Graph II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1051    Accepted Submission(s): 266 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situati…
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1143 题意:逆时针给一个凸包的n(n<=200)个顶点坐标,求一个最短哈密顿路径的长度. 解法:求最短哈密顿本身是一个NP问题,可是由于是凸包上,能够利用这个做:有一个性质:凸包上的最短哈密顿路径不会出现交叉.所以能够看出来从一点出发,他要么和顺时针相邻点连接,要么和逆时针相邻点相连接.通过这个性质能够通过dp做: ans[i][j][0]表示i開始.往后j的点最短路径长度,ans[i][…
Problem Description   As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them: Yuta has a non-direct graph with n vertices and n edges. Now he wants you to tell him…