![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 66
Z_X_B_233
这个作者很懒,什么都没留下…
展开
-
树结构_最小生成树_Prime算法
输入:一个加权连通图,其中顶点集合为V,边集合为E; 初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空; .重复下列操作,直到Vnew = V: a.在集合E中选取权值最小的边,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一); b.将v加入集合Vnew中,将原创 2017-03-07 21:07:52 · 628 阅读 · 0 评论 -
树结构_最小生成树_Krustra(边数较少时使用)
.将原图Graph中所有e个边按权值从小到大排序 .循环:从权值最小的边开始遍历每条边 直至图Graph中所有的节点都在同一个连通分量中 if 这条边连接的两个节点于图Graphnew中不在同一个连通分量中 添加这条边到图Graphnew中(运用并查集即可) 数学证明:原创 2017-03-07 19:55:14 · 710 阅读 · 0 评论 -
优先队列优化的Dijk单源最短路算法
开始以为优先队列优化的是最短路的时间复杂度,现在看来,更多的是优化空间复杂度 我们是先用那个把图变成树的数据结构来存储图中所有的边 如果我们用邻接表储存边的话,空间复杂度为n^2也就是说我们的数组最大能开到5000*5000 现在我们储存边,那么就可以在点较多而边较少的情况下搞定了 下面附上注释详尽的代码 题目:poj3159 这个题目其实是差分约束+Dijk不懂差分约束的话可以原创 2017-05-09 20:33:15 · 1269 阅读 · 0 评论 -
图结构_最短路_Dijkstra(单源最短路,不能有负边)
数据结构:邻接表Map 算法功能:求一点到其他点的最短路径,不能有负边 代码算法思想: int Dijkstra(int st,int en,int Map[maxn][maxn],int num)//注意,如果maxn特别大则要将这个数组开到main函数外面 { bool Vis[maxn]; int ans[maxn]; memset(Vis,0,sizeof(V原创 2017-03-16 16:09:48 · 454 阅读 · 0 评论 -
最短路_邻接表_字符串转化为数字的模板
数据结构: STL:map int num, iterator, distance,flag;//若开始与结尾相同则flag=1 int len[155][155]; //最后保存在这里 char begin[30], end[30]; char a[30], b[30]; map station; //字符串与数字的对应 代码模板 station原创 2017-03-12 18:49:37 · 374 阅读 · 0 评论 -
图结构_最短路_Floyd算法模板
适用范围:求一个边有权值的有向联通图,求点i,到点j的最短路或最长路 复杂度:空间复杂度n^2,时间复杂度o(n^3) 算法概述: 我如果要从点i到点j那么我可以选择以下几种方式 从i直接到j 从i,经过点1,然后到j 从i,经过点2,然后到j ......... Floyd算法就是遍历中间经过的点并取最值 他可能经过点1,点1,3 ,4,很多种情况先记住这东西,原创 2017-03-08 20:10:46 · 919 阅读 · 0 评论 -
差分约束模板题_poj3159
题目就是给你n个小孩,然后给这些小孩糖,m个约束条件 对于每个约束条件有 a,b,c三个数 .表示小孩b拿的糖-小孩a的糖 要求第一个小孩到第n个小孩拿的糖果的最大差值 我们移项就可以发现 小孩b的糖 所以我们就可以构造一条从a到b的边,边权为c 其实我们可以发现从第一个小孩到第n个小孩的最短路的长度是最起码的约束条件 输出这个值就好了 这里的n为30000所以是原创 2017-05-08 20:48:37 · 247 阅读 · 0 评论 -
我对不起党,对不起国家,对不起人民HDU6201 补题(disj)
这个题目其实特别傻逼 但是因为数组开小了一直T mmp! 其实就是建一个超级源点 对于每个点我们建一条有向边连接超级源点源点和这个点边权为a【k】 然后该怎么建图就怎么建图 跑一个最短路,求出超级源点到每个点的最短路,那么这个就是我从别的地方买,到这个点卖,买入价格+路费的最小值 然后emmmmm。。。。。再不会就别丢人了,退群吧 下面附上自己的1sAC代码,这个。。。。听说还有大原创 2017-09-11 14:07:05 · 998 阅读 · 0 评论 -
EK(BFS)求最大流的算法模板(邻接表)
#include #include #include #include #include #include #define inf 0x3f3f3f3f using namespace std; int Map[300][300],path[300]; int bfs(int st,int en) { queue q; int flow[300]; mems原创 2017-08-07 15:36:30 · 400 阅读 · 0 评论