图论
文章平均质量分 55
Nekroz_
这个作者很懒,什么都没留下…
展开
-
【模板】最短路径
【题目见LibreOJ#119.最短路】所谓最短路,顾名思义,就是给定一个起点s,一个终点t,以及一张图G = (V, E), 让你求解S到T的最短距离。这篇文章是讲述模板的,因此我只是码上main函数上面的部分,main函数里随机应变即可。先码上模板吧。SPFA模板如下:struct edge { int to, next, len; };struct SPFA{ vector<ed...原创 2018-02-06 15:14:41 · 327 阅读 · 0 评论 -
【题解】Codeforces 786B Legacy
传送门 题目意思很简单,就是你有三种操作: 1 u v w 从u向v连一条权值为w的有向边 2 u L R w 从u向L至R的所有结点连一条权值为w的有向边 3 u L R w 从L至R的所有结点向u连一条权值为w的有向边 首先看到题目,马上就明白不是暴力能够解决的事情(毕竟人家是Div.1的B啊),但是看到L和R,正常人应该都会往线段树这里想一想。没错,标算就是线段树图论建模+最短路。...原创 2018-05-21 21:15:51 · 1317 阅读 · 1 评论 -
【题解】网络流24题之分配问题
传送门思路剖析分配问题就是将人和工作分开来做匹配,但是与一般的二分图匹配不同的是,每个匹配都是有权值的。这个问题就是二分图最大权完美匹配问题。图论建模虽然这个问题可以用二分图最大权完美匹配的专门算法KM算法解决,但是这里只讲网络流解法。 首先发现人和工作的下标都是1~n的,直接建图会产生歧义,于是我们可以定义人的下标是1~n,而工作的下标是n + 1~2n。 对于第iii个...原创 2018-04-29 16:51:48 · 406 阅读 · 0 评论 -
【题解】网络流24题之飞行员配对方案问题
传送门思路剖析明显的二分图匹配嘛。。。这看不出来就先去了解了解二分图吧。 说了是网络流24题了,那我们就要用网络流AC此题。图论建模给你一个二分图,就是一个无源无汇的图。我们建立一个原点s和一个汇点t,我们对于原图G中的任意一条边&lt;u,v&gt;&lt;u,v&gt;,其中u在X部中,v在Y部中(X部和Y部是二分图的两个点集,每条边的一个点在X中,另一边在Y中), ...原创 2018-04-27 19:54:08 · 272 阅读 · 0 评论 -
【模板】强连通分量Tarjan算法
还是贴模板。。vector<int> G[Vmax];stack<int> S;int tmpdfn, scc_cnt, dfn[Vmax], low[Vmax], scc[Vmax]; void Tarjan(int u){ dfn[u] = low[u] = ++tmpdfn; S.push(u); int v = 0; for ...原创 2018-03-12 12:38:28 · 399 阅读 · 0 评论 -
【模板】二分图最大权完美匹配KM算法
题目参见洛谷P4014模板贴一下。struct part { int ex[MAXN]; bool vis[MAXN]; } X, Y;int n, match[MAXN], slack[MAXN], fit[MAXN][MAXN];bool DFS(int x){ X.vis[x] = true; for (int y = 1;y <= n;y++) { ...原创 2018-03-12 12:33:08 · 444 阅读 · 0 评论 -
【模板】二分图最大匹配(匈牙利算法)
模板题目参考洛谷P3386既然是模板,那我就先不负责任地把代码贴出来吧。bool f[MAXN][MAXN], visit[MAXN];struct part{ int num, match[MAXN];}X, Y;int DFS(int u){ for (int v = 1;v <= Y.num;v++) if (f[u][v] &&...原创 2018-03-07 16:26:52 · 297 阅读 · 0 评论 -
【题解】双机调度问题
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...原创 2018-03-07 16:07:52 · 1068 阅读 · 0 评论 -
【模板】最小生成树
【题目见LibreOJ#123.最小生成树】所谓最小生成树,是给定一个图G = (V, E),在边集E中取|V| - 1条边时整个图连通且无环,其中边权和最小的边集E'称作图G的最小生成树,我在这里简单介绍两种经典算法:Kruskal算法和Prim算法。其中,Kruskal算法代码如下:int n, m, ans;int f[Vmax];struct Edge { int from, to, ...原创 2018-02-06 21:45:44 · 353 阅读 · 0 评论 -
【模板】图论算法模板(持更)
图论图论是个大板块,建模在图论中占有很重要的地位,至于算法就是理解之后代码多敲敲,具体的架构还是差不多的。 图论大概有3个级别,第一级别就是没有边权的图,用于遍历或者强连通SCC跑一波等等;第二级别就是有边权的,这下算法多了,各种最短路和最小生成树都有了,一二级别有时候可以合并,遍历时没有边权实际上边权就是1;然后第三级别就是有流量(dalao们的网络流),当然还有各种变种,比如说加个费用啊...原创 2018-04-17 09:02:50 · 455 阅读 · 0 评论