图论的复习/(ㄒoㄒ)/
图论基本概念
完全图: 每对顶点之间有边并且只有唯一的一条边.
强连通分量:有向图中任意2点都联通的最大子图.
图的储存
邻接矩阵:也就是一个二维数组,a[i][j]的值代表是否相连.
适用范围:
1.稠密图
2.无多重边
3.数据规模小
链式前向星:(模拟链表)
代码实现(主要部分)
void add_eage(int from,int to,int dis)
{
eage[++num].next=head[from];
eage[num].to=to;
eage[num].dis=dis;
head[from]=num;
}
割点&割边:
如果删去,那么原来联通的图就会变成2个或2个以上子图
判断割点:开一个low数组来记录i及i的子孙相连的最高的祖先的访问时间戳
low[u]=min(low[u],low[v]);
判断割边:当且仅当low[v]>dfn[u];
强连通分量Tarjan
void tarjan(int i)//开始搜索...
{
int j;
dfn[i]=low[i]=++times;//记录时间戳
stak[++stp]=i;//压入栈
for(j=head[i];j;j=a[j].next)
{
int k=a[j].to;
if(!dfn[j])
{
tarjan(j);
if(low[j]<low[i]) low[i]=low[j];
}
else if(instak[j]&&dfn[j]<low[i]) low[i]=dfn[j];
}
if(dfn[i]==low[i])//判断改点是否为根节点
{
cnt++;//定义在最外面
do
{
j=stak[stop--];
instak[j]=false;
belong[j]=cnt;
}while(i!=j);
}
}
//cnt代表多少个强连通分量
最短路
1.Dijkstra:不含负权
思路:每次找到离源点最近的一个点进行扩展,最终得到源点到其余所有点的最短路径,不含负权
2.Bellman-ford:有负权,不含负权回路
这个就转变成对边的松弛
for(int i=; i<=n; i++)
{
int mindist = MAXINT;
int u = v0; // 找出当前未使用的点j的dist[j]最小值
for(int j=; j<=n; ++j)
if((!S[j]) && dist[j]<mindist)
{
u = j; // u保存当前邻接点中距离最小的点的号码
mindist = dist[j];
}
S[u] = true;
for(int j=; j<=n; j++)
if((!S[j]) && A[u][j]<MAXINT)
{
if(dist[u] + A[u][j] < dist[j]) //在通过新加入的u点路径找到离v0点更短的路径
{
dist[j] = dist[u] + A[u][j]; //更新dist
prev[j] = u; //记录前驱顶点
}
}
}
3.SPFA:kuai
while (!Q.empty())
{
int u = Q.front();
Q.pop();
visited[u] = ;
for (int v = ; v < vertex_num; v++)
{
if (matrix[u][v] != INT_MAX) //u与v直接邻接
{
if (dist[u] + matrix[u][v] < dist[v])
{
dist[v] = dist[u] + matrix[u][v];
path[v] = u;
if (!visited[v])
{
Q.push(v);
enqueue_num[v]++;
if (enqueue_num[v] >= vertex_num)
return false;
visited[v] = ;
}
}
}
}
}
最小生成树太简单了
图论的复习/(ㄒoㄒ)/的更多相关文章
- NOIP2018考前抱佛脚——图论基础复习
目录 存图方式 邻接矩阵存图 邻接表存图 链式前向星 最小生成树 例1 P1536 村村通 题目描述 输入输出格式 输入输出样例 标程 例2 P1546 最短网络 Agri-Net 题目背景 题目描述 ...
- [SinGuLaRiTy] 图论题目复习
[SInGuLaRiTy-1027] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [Vijos 1423] 最佳路线 题目描述 年久失修的 ...
- [vijos P1626] 爱在心中
做完Victoria的舞会3,挑了vijos里强连通分量里面难度值最低的题目,也就是这道.先把第一小问做了,纯Tarjan,只是我学的时候的标程是用邻接表的,这题数据小于是用了邻接矩阵,两者之间的切换 ...
- SCOI2014省选总结
这一次省选,主要是抱着玩的心态去的,如同高二的那些大神高一的心态一样,只记得在省选之前我们一直在说,这一次我们的目标,就是不爆0,最后也如愿以偿的实现了. 首先,请允许我吐槽一下day1.....da ...
- ZOJ3229 Shoot the Bullet [未AC]
Time Limit: 2 Seconds Memory Limit: 32768 KB Special Judge Gensokyo is a world which exist ...
- JML契约式设计——第三单元学习小结
一.前言 本单元作业都是关于JML(Java Modeling Language),JML是一种契约式设计(Design by Contract)的语言,契约式设计的主要目的是希望程序员能够在设计程序 ...
- NOIP专题复习1 图论-最短路
一.知识概述 今天我们要复习的内容是图论中的最短路算法,我们在这里讲3种最短路求法,分别是:floyd,dijkstra,spfa. 那么我们从几道例题来切入今天讲解的算法. 二.典型例题 1.热浪 ...
- NOIP专题复习3 图论-强连通分量
目录 一.知识概述 二.典型例题 1.[HAOI2006]受欢迎的牛 2.校园网络[[USACO]Network of Schools加强版] 三.算法分析 (一)Tarjan算法 (二)解决问题 四 ...
- [SinGuLaRiTy] 复习模板-图论
[SinGuLaRiTy-1041] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 计算树的直径 //方法:任选一个点作为起点进行一次BFS ...
随机推荐
- RevealTrans图片切换效果
RevealTrans 更新时间:2013-06-01 17:11:59 | RevealTrans兼容性:IE5.5+ 语法: filter : progid:DXImageTransform.Mi ...
- 揭秘css
这是我看到非常好的一本电子教程,可以当参考手册使用,链接
- 基于Ubuntu搭建Linux路由器
开源,几乎代表了无所不能的意思,最近又因为它玩Hi了... 因业务发展,需要临时接入300MB的专线和千兆路由器,而公司现有的路由器却是百兆的,出于成本考虑,只能不想更换新的路由器,在网上查了一下可以 ...
- Java生成C#可用Model包
项目需要提供接口给.NET团队使用,为方便大伙,特地写一个从Java接口生成C#可用Model包的工具Class 主Class是一个Controller,可以随时进行生成 package com.fa ...
- Spring MVC自动为对象注入枚举数据
一.实现转换工厂,定义转换实现,如下: package com.mafwo; import org.springframework.core.convert.converter.Convert ...
- WebSocket 与 HTTP/2
个人笔记 WebSocket WebSocket 是一个双向通信协议,它在握手阶段采用 HTTP/1.1 协议(暂时不支持 HTTP/2). 握手过程如下: 首先客户端向服务端发起一个特殊的 HTTP ...
- 使用ListOperations操作redis
使用ListOperations对象操作redis list: 方法 c参数 s说明 List<V> range(K key, long start, long end); K key ...
- [Elasticsearch] 多字段搜索 (二) - 最佳字段查询及其调优(转)
最佳字段(Best Fields) 假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样: PUT /my_index/my_type/1 { "title": " ...
- el-table中操作一栏怎么根据当前行的信息显示编辑、删除、编辑完成按钮
对每个按钮是否显示,使用v-show绑定变量,因为每一行的v-show绑定的变量必须是唯一的(不然的话操作此行,其他行的状态也会跟着变化),所以不可能提前在.ts中对变量进行初始化,只能使用本行的字段 ...
- DataGridView过滤功能
http://www.codeproject.com/Articles/33786/DataGridView-Filter-Popup http://www.cnblogs.com/jaxu/arch ...