拓扑排序和欧拉回路
煦--晨
菜鸟起飞
展开
-
欧拉回路((hdu1878))
无向图存在欧拉回路的充要条件一个无向图存在欧拉回路,当且仅当该图所有顶点度数都是偶数且该图是连通图。有向图存在欧拉回路的充要条件一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图混合图存在欧拉回路条件要判断一个混合图G(V,E)(既有有向边又有无向边)是欧拉图,方法如下:假设有一张图有向图G',在不论方向的情况下它与G同构。并且G'包含了G的所有有向边。那么如果存原创 2013-08-02 21:39:43 · 600 阅读 · 0 评论 -
(((hdu3018连通分量的欧拉回路))
题目意思: 有一个团队的人要去逛小镇,这个镇是无向图,然后规定每条路只能走一次,且两个小镇之间只有一条小路。(就避免了多条路径的问题。)然后这个图有可能有连通分量,如果图有孤立点,那么这个点就忽略掉,(这个挺有用)。问要分为几组人马才能够把这个城市的小镇全部逛完。解题思路:(连通分量,粗俗地讲就是一个图的几个隔离的子图,每个子图为一个连通分量)原创 2013-08-02 21:47:12 · 713 阅读 · 0 评论 -
产生冠军((hdu2094))((拓扑排序))
小结。。1,利用拓扑排序当确定比赛的名次时用toposort()用ans【】记录入读为零的点最后再依次输出即可(((这种情况默认不是环形才可));;注意对入度随时的处理;;((如hdu1285)),2,当利用产生冠军时:记录 入度,,最后看入度为零的点有几个如果有多个则没冠军,否则反之;;3,当确定是否能判定名次时(既没环)用toposort(),与一的区别是,有几个人就得有几个为零的原创 2013-08-02 22:19:22 · 862 阅读 · 0 评论 -
hdu1285(拓扑排序)
拓扑排序简单来说就是把一个图的所有节点排序,使得每一条有向边(u,v)对应的u都排在v的前面。 拓扑排序最大的用途就是判断一个有向图是否有环,当然判断还有一种方法就是Floyd算法。如果用邻接表的话拓扑排序的时间复杂度是O(N*E),邻接矩阵是O(N^2),N表示顶点数,E表示边数,Floyd时间复杂度是O(N^3)。性质1、 拓扑排序在有向无环图中才能排出有效的序列,否则能判断该原创 2013-08-02 22:26:07 · 608 阅读 · 0 评论 -
poj1041 John's trip【无向图欧拉回路判定+输出路径】
题意:给出一个图,要求以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的字典序最小的路径。输入中每行三个数字想x,y,z,表示结点x到结点y有一条边编号为z。分析:简单的欧拉回路。欧拉回路:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路。一个无向图存在欧拉回路的充要条件是每个顶点的度是偶数,对于有向图存在欧拉回路的条件是每个原创 2013-08-02 22:13:06 · 877 阅读 · 0 评论 -
hdu((1116))欧拉回路和通路。。
题目大意:给你n个单词,要你判断这些单词能不能首尾相连。把每个单词的首尾字母有一条有向边相连,记录每个字母的入度和出度把每两个能连的单词用一条有向边边相连,既是要判断该有向图图是否有欧拉通路,至于欧拉回路和欧拉通路的判定可以总结为如下:1)所有的点联通2)欧拉回路中所有点的入度和出度一样。3)欧拉通路中终点的入度 - 出度 = 1,起点的 初度 - 入度 = 1, 其他的所有点原创 2013-08-02 21:52:05 · 964 阅读 · 0 评论 -
欧拉回路的总结
相关概念欧拉回路 通过图中每条边一次且仅一次,并且过每一顶点的回路。欧拉路径 通过图中每条边一次且仅一次,并且过每一顶点的通路。欧拉图 存在欧拉回路的图。半欧拉图 存在欧拉路径的图。 无向欧拉图的判定无向图存在欧拉回路的充要条件: 连通且没有奇度顶点。无向图存在欧拉路径的充要条件: 连通且奇度顶点个数为2。 有向欧拉图的判定原创 2013-08-02 21:35:56 · 1015 阅读 · 0 评论 -
杭电3342Legal or Not (拓扑排序)
拓扑排序简单来说就是把一个图的所有节点排序,使得每一条有向边(u,v)对应的u都排在v的前面。 拓扑排序最大的用途就是判断一个有向图是否有环,当然判断还有一种方法就是Floyd算法。如果用邻接表的话拓扑排序的时间复杂度是O(N*E),邻接矩阵是O(N^2),N表示顶点数,E表示边数,Floyd时间复杂度是O(N^3)。性质1、 拓扑排序在有向无环图中才能排出有效的序列,否则能判断该原创 2013-08-02 22:06:12 · 886 阅读 · 0 评论 -
hdu(4324)Triangle LOVE
如果存在三角恋输出yes;题意:1表示别人喜欢他;则他的如度就加一;然后用拓扑排序;只要没有入度为零的点,就组成了三角恋,则输出yes; #include"stdio.h"#include"string.h"int degree[3000];char map[3000][3000];int n;int posort(){ int i,j,k; f原创 2013-08-04 12:47:08 · 642 阅读 · 0 评论