回路

luogu P4233 射命丸文的笔记

只愿长相守 提交于 2020-02-11 00:02:08
题目 题意:给出 \(n\) ,在 有哈密顿回路的 \(n\) 个点的竞赛图中等概率选出一个,求哈密顿回路个数的期望。 答案就是 哈密顿回路的总条数 除以 有哈密顿回路的竞赛图的个数。 哈密顿回路的总条数是很好求的,对每个环算贡献,算出 \((n-1)!2^{C_n^2-n}\) 。 有哈密顿回路的竞赛图的个数,这个有点难办。 结论:一个竞赛图有哈密顿回路 的充要条件是 它强连通。 必要性显然,简单证证充分性。(如果假了或者有更好的证法请告诉我qwq) 归纳证明。对于点数很小的情况,容易验证是对的。现在假设已经证明了点数在 \(n-1\) 以内时结论是对的。 假设去掉 \(n\) 号点,这时图仍是竞赛图但不一定强连通,此时图中有若干个强连通分量。 把强连通分量缩点变成拓扑图后,显然拓扑序是唯一的,设为 \((S_1\rightarrow S_2\rightarrow \cdots\rightarrow S_k)\) ,其中 \(S_i\) 为一个强连通分量。 因为要强连通, \(n\) 和 \(S_1\) 之间有至少一条边方向是 \((n\rightarrow S_1)\) ,而 \(n\) 和 \(S_k\) 之间有至少一条边方向是 \((S_k\rightarrow n)\) 。 由于 \(S_i\) 的点数 \(|S_i|\) 小于 \(n\)

最短路径

匿名 (未验证) 提交于 2019-12-02 23:51:01
<前导> 这里回顾四种计算最短路径的算法,分别为: Floyd算法; Dijkstra算法; Bellman-Ford算法; SPFA算法; <Floyd算法> Floyd算法的实现非常简单,直接看代码: int d[maxn][maxn];//d[i][j]表示顶点i、j之间的最短距离 int inf=99999999; for(int i=0;i<maxn;i++){ d[i][i]=0; //初始化 } void Floyd(){ for(int k=0;k<n;k++){ //注意Floyd算法先循环中转点k for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(d[i][k]<inf&&d[k][j]<inf&&d[i][k]+d[k][j]<d[i][j]) d[i][j]=d[i][k]+d[k][j]; } } } } <dijkstra算法> //以邻接矩阵为例 bool book[maxn]={false}; int d[maxn]; int G[maxn][maxn];//注意G也需要初始化,除了输入的边之外,其余不连通的边全部设为inf int n,inf=99999999; void Dijkstra(int s){ for(int i=0;i<maxn;i++){ d[i]=inf;//初始化 } d[s]=0;

判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用

自作多情 提交于 2019-11-30 03:16:24
判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用() A 求关键路径的方法 B 求最短路径的Dijkstra方法 C 深度优先遍历算法 D 广度优先遍历算法 答案:C (dfs) 利用深度优先遍历可以判断图G中是否存在回路。对于无向图来说,若深度优先遍历过程中遇到了回边,则必定存在环;对于有向图来说,这条回边可能是指向深度优先森林中另一棵生成树上的顶点的弧;但是,从有向图的某个顶点V出发进行深度优先遍历时,若在DFS(v)结束之前出现一条从顶点u到顶点v的回边,且u在生成树上是v的子孙,则有问图必定存在包含顶点v和顶点u的环。 来源: CSDN 作者: AFEI_GAO 链接: https://blog.csdn.net/AFEI666666/article/details/103246105

欧拉回路及例题

♀尐吖头ヾ 提交于 2019-11-29 03:24:14
欧拉回路 几个定义 性质与定理 定理1 推论1 定理2 推论2 性质1 性质2 算法主体 例题 uoj117求给定图的欧拉回路 poj1041求字典序最小的欧拉回路 poj1386Play on Words poj2230求无向图欧拉图要求每条边走两遍且方向不同 poj2513字符串的欧拉图 poj2337字典序 poj1637Sightseeing tour求混合图欧拉回路 HDU 2894Poj1392 欧拉回路 几个定义 设G (V,E)是一个图。 1.欧拉回路 图G中经过 每条边一次 并且 仅一次 的回路称作欧拉回路。 2.欧拉路径 图G中经过每条边一次并且仅一次的路径称作欧拉路径。 3.欧拉图 存在欧拉回路的图称为欧拉图。 4.半欧拉图 存在欧拉路径但不存在欧拉回路的图称为半欧拉图。 性质与定理 二、性质与定理 在以下讨论中,假设图 G不存在孤立点(度为0);否则,先将所有孤立点从图中删除。 显然,这样做并不会影响图G中欧拉回路的存在性。 我们经常需要判定一个图是否为欧拉图(或半欧拉图),并且找出一条欧拉回路(或欧 拉路径)。对于无向图有如下结论: 定理1 无向图G为欧拉图,当且仅当G为连通图且所有顶点的度为偶数。 证明: 必要性。 设图G的一条欧拉回路为C。由于C经过图G的每一条边,而图G没 有孤立点,所以C也经过图G的每一个顶点,G为连通图成立