上一页 1 ··· 8 9 10 11 12
摘要: ( ̄▽ ̄)" #include #include using namespace std; const int INF=10e7; const int MAXN=1010; int k,minn; int cost[MAXN][MAXN]; int lowcost[MAXN]; bool vis[MAXN]; void dij(int n,int start) { for(int i=1... 阅读全文
posted @ 2016-02-17 23:33 &ATM 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 当mod一个大数p的时候,还有进行乘法的时候可能会爆long long的时候,就用快速乘或者快速幂。 参考:http://www.cnblogs.com/whywhy/p/5066730.html 先上模板: 快速乘: ll multi(ll a,ll b,ll m) { ll ans=0; while(b) { if(b&1) (ans+=a) %= m... 阅读全文
posted @ 2016-02-07 16:01 &ATM 阅读(889) 评论(0) 推荐(1) 编辑
摘要: 参考资料:http://blog.csdn.net/lezg_bkbj/article/details/11538359 上面的资料,把强连通讲的很好很清楚,值得学习。 在一个有向图G中,若两顶点间至少存在一条路径(即a能到b,b也能到a),则称两个顶点强连通;如果该有向图G中任意两顶点都强连通,则称G为强连通图;在一个非强连通图中,若有子图是强连通图,则称该子图为强连通分量。 有向图强连... 阅读全文
posted @ 2016-02-04 00:05 &ATM 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 欧拉路的相关概念: 1.能从无向图中的一个顶点出发,并走出一条道路,每条边恰好经过一次,这样的路线就叫做欧拉路; 2.找欧拉路首先要判断是否存在欧拉路: 一个无向图存在欧拉路当且仅当该图是连通的,且有且只有0或2个点的度数是奇数,为2时这两个点只能作为欧拉路径的起点和终点(0个时称为欧拉回路)。 3.确定存在欧拉路之后,开始构造欧拉路: 欧拉路参考:http://blog.csdn.net... 阅读全文
posted @ 2016-02-03 21:47 &ATM 阅读(904) 评论(0) 推荐(0) 编辑
摘要: 【需要解决的问题】 对一个有向无环图(DAG)拓扑排序。 拓扑排序就是,对图上的点进行排序,使得排在后面的点不能通过一条路径到前面的点。 比如下面这个图: 其中一个拓扑排序是1,2,3,4,5;而1,2,5,3,4就不行,因为3能到达5。 因此可以得出: 用一个队列实现,先把入度为0的点放入队列,每 阅读全文
posted @ 2016-02-02 22:36 &ATM 阅读(1624) 评论(0) 推荐(1) 编辑
摘要: 先来说说什么是树。 树实际上是图的一种,当一个有N个点的无向连通图,只有N-1条边时,就是一棵树,即树中不会有环出现;所以对于一个图,删除某些环中的某条边,使得该图成为一棵树,那么这棵树就称为生成树。 而最小生成树的意思就是,给定有n个顶点的带权图G(E,V),找到一棵生成树,求该生成树的边权和。 Kruskal算法: 算法步骤: 1.构造一个有n个顶点的无边子图; ... 阅读全文
posted @ 2016-02-02 20:50 &ATM 阅读(1073) 评论(0) 推荐(0) 编辑
摘要: 在学习最小生成树的两种算法前,先学下并查集。 并查集的思想是,对于一个集合,使用集合中的一个顶点作为特殊点,集合里所有的点都与此特殊点直接相连;而并查集的查询,就相当于查询两个两个顶点是否为同一个父亲,这也是findSet(x)里之所以有fa[x]==x时,fa[x]=x的原因。 并查集之查询、合并 模板如下: int fa[30010]; void makeSet(i... 阅读全文
posted @ 2016-02-02 16:31 &ATM 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 先说前三种,主要解决的问题是:“求a点到b点的最短路”,解决方法是:用以下三种算法中的一种,求出a点到其他所有点的最短路,即可知道a点到b点的最短路。 前三种最短路算法是:Dijkstra(及优先队列优化),Bellman-Ford,SPFA(实际上就是BF的优化版)。 Dijkstra算法: (要求边权只能大于等于0) 未优化 O(N2): 贪心... 阅读全文
posted @ 2016-02-02 16:12 &ATM 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 【概念】疏松图&稠密图: 疏松图指,点连接的边不多的图,反之(点连接的边多)则为稠密图。 Tips:邻接矩阵与邻接表相比,疏松图多用邻接表,稠密图多用邻接矩阵。 邻接矩阵: 开一个二维数组graph[ ][ ]来记录图中点a与点b之间是否连通,初始化为0(或者-1之类的看情况);如果图中有可忽略的重边(如 只需重边中的最小边或最大边),则保存需要的那条边的边权,但如果有无法忽略的重边,就一... 阅读全文
posted @ 2016-02-02 00:20 &ATM 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: DFS和BFS在图中的应用: 图连通性判定;路径的存在性;图中是否存在环;求图的最小生成树;求图的关键路径;求图的拓扑排序。 DFS:简单的说,先一直往深处走,直到不能再深了,再从另一条路开始往深处走,直到所有路都走完; struct node { int next; //E[i].next指向图中 阅读全文
posted @ 2016-02-01 22:07 &ATM 阅读(634) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12
……