![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
楚云兮
这个作者很懒,什么都没留下…
展开
-
迪杰斯特拉模板(记录最短路径)
#include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; ///每次将最近的距离点u加入到集合中,然后用点u去更新未访问的邻接点v到原点的最短路径距离. ///s->...->u->v 因此u是v的前继结点。保存最短路径时用pre[v]=u,表示v的前继结点 const int maxn=10010,inf=0x原创 2020-06-21 23:05:01 · 233 阅读 · 0 评论 -
二分图染色模板
判定一个图是否为二分图 从其中一个定点开始,将跟它邻接的点染成与其不同的颜色,最后如果邻接的点有相同颜色,则说明不是二分图,每次用bfs或者bfs遍历即可。 dfs模板 bool dfs(int u,int c){ color[u]=c; for(int i=0;i<G[u].size();i++){ int v=G[u][i]; if(color[v]==c) return false; if(color[v]==0&&原创 2020-06-17 20:10:31 · 228 阅读 · 0 评论 -
Tarjan算法通俗理解
Tarjan算法是基于对图深度优先搜索的算法,时间复杂度是O( | V |+| E | )。 介绍Tarjan算法前解释下搜索树,有向图的搜索树主要有四种边。用虚线画出来的是树边,每次搜索找到一个还没有访问过的结点是时候就形成了一条树边。用长虚线画出来的边是反祖边,也称做回边。用短虚线画出来的是横叉边,它主要是在搜索时遇到了一个已经访问过的结点,但是这个结点并不是当前节点的祖先形成的(例如结点4到3,结点6到4)。另外,像结点1到6不是直接到达的边称为前向边。 input:(输入6个顶点,8条边) 6原创 2020-06-03 17:32:56 · 527 阅读 · 0 评论