图论
栗原小野
千里之行,始于足下!
展开
-
PTA A1131 Subway Map(30)
题目:click me~题意:给出几条地铁线路,查询从起点站到终点站的经停次数最少的路线,如果经停次数相同,输出换乘次数最少的路线。解题思路:需要一遍DFS,DFS中要维护两个变量:mincnt中途经停最少的次数,mintransfer需要换乘的最小次数步骤一:计算换乘次数的方法:在line[10000][10000]的数组中保存每两个相邻站中间的路是几号线。从头到尾遍历最终的路径,preline是前一小段的线路编号,若当前小段的线路编号与preline不同,说明有一个换乘,累加器加1;步骤原创 2020-07-05 11:29:18 · 179 阅读 · 0 评论 -
PTA1018 Public Bike Management (30分)
题目:click me~题意:城市公共自行车可在任意站点借还车,每个站点最佳状态是停一半的自行车。管理员在站点0,只要有problem station需要,管理员就要走最短路径 去调整problem station 以及最短路上的站点到最佳状态。1.若是有几条相同长度的路径,则取需要从站点0带出自行车最少数的那条路。2.满足1,若是需要自行车数仍然相同,则取要带回站点0自行车最...原创 2020-02-21 19:39:14 · 162 阅读 · 0 评论 -
【图论】Cow and Snacks 并查集
#题目:The legendary Farmer John is throwing a huge party, and animals from all over the world are hanging out at his house. His guests are hungry, so he instructs his cow Bessie to bring out the snac...原创 2020-01-29 10:45:50 · 231 阅读 · 0 评论 -
【图论】Secret Passwords并查集
题目:One unknown hacker wants to get the admin’s password of AtForces testing system, to get problems from the next contest. To achieve that, he sneaked into the administrator’s office and stole a pie...原创 2020-01-28 22:32:30 · 150 阅读 · 0 评论 -
POJ1502 mpi-maelstrom dijkstra
题意:给出一个无向图,一共n个点,要求第一个点到其余各点的最短路的最大值。解题思路:这道题用dijkstra算法。算法具体如下:1.初始化 :所有点到源点的距离为无穷大2.用vis数组表示有两个集合,1表示最短路已经求得(用数组d表示),0表示未求得最短路,做n遍循环,遍历每一个点时,找到d最小的那个点,把它的vis标为1,并且更新和它相连的点的d。3.这样所有点的最短路就都求...原创 2019-09-05 23:17:52 · 100 阅读 · 0 评论 -
【最短路问题】Til The Cows Come Hone HDU 2387
题意:给一张图,1为起点,n为终点 求有权图单源最短路。解题思路:dijkstra+堆优化。用优先队列来实现最小堆。新学到了优先队列和pair的用法优先队列:priority_queue < P, vector < P >, greater<P > >que;这样是定义了升序队列。包含在头文件<queue>中。pair:定义...原创 2019-08-08 23:32:09 · 90 阅读 · 0 评论 -
【图论】最小生成树 kruskal hdu1863 畅通工程
kruskal:将图中的边按边权排好升序,然后从小的开始遍历,如果这条边的起点终点在一个联通图(并查集)里就不加入这条边,反之加入边,并且两个点加到一个并查集里。#include<cstdio>#include<algorithm>#define MAX_N 111using namespace std;int N, M;struct edge {...原创 2019-05-18 13:48:41 · 225 阅读 · 0 评论 -
【字符串】AC自动机(kmp+字典树)hdu2222
AC自动机:用公共前缀来减少查询时间,减少无谓的字符串比较时间,此处的公共前缀就是kmp的next数组构造。查询一个文本串中模式串出现的次数,需要构建字典树,而这里如何将两者联系到一起呢?就是将字典树上的next数组构造变成了给每个节点找fail指针。关键点1:字典树构造比方说我们有五个模板串:she shr say he her依次插入,根节点没有字母,标为0,插入she,从根...原创 2019-05-17 20:36:46 · 160 阅读 · 0 评论 -
最近公共祖先 dfs+rmq-st hihocoder1069
参考:https://www.cnblogs.com/pczhou/p/4297132.htmlrmq-sthttps://www.cnblogs.com/five20/p/7531644.html代码:#include<iostream>#include<cmath>#include<map>#include<vector>#...原创 2019-05-26 23:18:35 · 326 阅读 · 0 评论 -
【图论】强连通分量 tarjan UOJ#146
题目链接:http://uoj.ac/problem/146求强连通分量的个数 。1.有向图中:强连通:两个节点可以互相到达强连通图:图中的任意两点都可以互相到达也即任意两点都是强连通强连通分量:图中的子图是强连通图2.Tarjan算法:用来求有向图的强连通分量。基于DFS算法,每个强连通分量为搜索树中的一颗子树。搜索时,把当前图中未处理的点加入一个堆栈,回溯时可以栈顶...原创 2019-05-26 14:19:18 · 121 阅读 · 0 评论 -
【图论】最短路算法 spfa&dijkstra+配对堆优化 hdu1874
目录1.spfa(Shortest Path Faster Algorithm):2.dijkstra+配对堆优化:1.spfa(Shortest Path Faster Algorithm):可以处理负边但不能处理负环,时间复杂度为O(kN)k为所有顶点进入队列的平均数,N为顶点个数。算法思想:源点为s,s到i的当前最短路径为d[i],初始时,s到每个点的d[i]都为...原创 2019-05-25 18:29:26 · 450 阅读 · 1 评论 -
【图论】二分图 匈牙利算法模板题 hdu2063 过山车
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063这道题求的是二分图的最大匹配数。#include<cstdio>#include<cstring>#include<algorithm>#define MAX_N 510using namespace std;int k, N, M;in...原创 2019-05-21 11:00:19 · 228 阅读 · 0 评论 -
【图论】最小生成树 Prim hdu1863 畅通工程
Prim:弄两个集合u和v,u里面放已经联通的节点,v里面放没有访问过的节点。我们把邻接表用一个优先队列来存储,这样的话每次出的就是最小边权的那条边。代码如下:#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue...原创 2019-05-19 22:41:07 · 136 阅读 · 0 评论 -
POJ3522 (Kruskal+生成树最小苗条度)
题目链接:http://poj.org/problem?id=3522题意:求生成树里最大边权与最小边权的差值的最小值(最小苗条度)。解题思路:先把边排序,从小到大枚举生成树,这样的话差值肯定就是最小的,然后从所有可生成的差值里选最小的。代码如下:#include<cstdio>#include<algorithm>#include<cstr...原创 2019-05-19 10:31:40 · 207 阅读 · 0 评论