图与树
weixin_44019404
这个作者很懒,什么都没留下…
展开
-
关于生成图的总结
邻接表 struct edge { int to, cost; };//保存信息到达边和权值 vector<edge>g[1000]; int main() { int v, e; cin >> v >> e; up(i, 0, e) { edge a; int j,s, t; cin >>j>> s >&g...原创 2019-03-08 20:23:23 · 204 阅读 · 0 评论 -
POJ 3255 次段路径模板
次最短路径模板 我们可以知道从a-b的次短路径,是a-c的最短加上c-b,或者是a-b的次短加上c-b。 这其实可以想象成为,我们用djkstra算法的时候,每次更新滚动的是,最小值,那么肯定就有原来的值被抛弃掉,我们将被抛弃的值记录下来,这是上一个的最优解,之比当前最优解稍微差了一些。 这样就能找到次短的路径了,相当于在djkstra算法基础上,多开了一个数组来保存被丢弃的值。 #include...原创 2019-03-08 21:55:50 · 300 阅读 · 0 评论 -
poj3723 kruskal最小生成树
最小生成树。 树的话就有从叶子到根节点,那么一棵树下来,不会有重边和圈,切,上面的给下面一个提供关系,这样生成的树一定能够满足题目要求。 题目求的是最小代价,但题目给的代价是d,要稍微转化一下。 我用的kruskal算法。其实也可以用prim算法,不过我总觉prim难写一些 #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;a...原创 2019-03-09 11:03:03 · 204 阅读 · 0 评论 -
POJ 3169
差分系统的解决。 xi-xj<=s 对应这样的差分的时候,可以转换成对应的路径最短。xi<=s+xj,对应bellman算法,从j-i的边的权值w,d[i]的值一定小于等于d[j]+w。所以我们加入这条边,j->i,w=s。 最短路径对应于最大值。 可以这么想,我们这里加入的边的权值就是取等号的条件,每一条路径就是每一个的约束条件,从1-n有m条路经可以走对应m个约束条件可以...原创 2019-03-09 15:07:50 · 96 阅读 · 0 评论 -
POJ 2139 floyd算法
floyd算法 把每头牛当作一个点,能够直接到达的,在两个点之间连接一条边,边长为1。 这样遍历所有的点,找到每个点之间的最短距离,然后再依次从每个点出发遍历所有其他的点距离之和的最小值除以n-1乘以100就是答案了 #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&l原创 2019-03-09 16:44:28 · 113 阅读 · 0 评论