随笔分类 -  Dijkstra

摘要:求一个点到另一个点的路径中最大的最小边。和poj2253一模一样。 松弛操作改成if(d[v]<min(d[u],w)) d[v]=min(d[u],w); 即可。 也可以用最大生成树树即可。 最大生成树中两点间的那条路径中的最小值必是所有路径中最大的最小值。 阅读全文
posted @ 2018-09-06 17:17 LMissher 阅读(114) 评论(0) 推荐(0)
摘要:求一个点到另一个点的路径中最小的最大边。 松弛操作改成if(d[v]>max(d[u],w)) d[v]=max(d[u],w); 即可。 阅读全文
posted @ 2018-09-06 17:05 LMissher 阅读(102) 评论(0) 推荐(0)
摘要:给一幅图,求乘积最短的路径。 把乘积取对数就能变成普通的最短路。 #include <bits/stdc++.h> using namespace std; const int M = 1e6+7; const double inf = 2147483647; const int mod = 998 阅读全文
posted @ 2018-08-29 15:38 LMissher 阅读(201) 评论(0) 推荐(0)
摘要:题意给一个图,问从1节点出发到所有i节点的最短路有多少条,边权都为1。 维护一个ans,如果dis[v]>dis[u]+1,那么ans[v]=ans[u]并更新距离。如果dis[v]==dis[u]+1,那么ans[v]+=ans[u]。 #include <bits/stdc++.h> #defi 阅读全文
posted @ 2018-08-29 15:37 LMissher 阅读(212) 评论(0) 推荐(0)
摘要:题意:有n头牛,有m条连接n头牛的路。有一个牛k,所有牛都需要走到牛k处并返回(去的路与回的路距离不同)。求所有牛都最快回到原地处的最大时间。 题解:做这道题的时候,其实并没有想到官方题解。想的是用Dijkstra求出每个牛去和回的最小路相加的最大值。结果用普通的Dijkstra T了。后面用优先队 阅读全文
posted @ 2017-08-21 10:31 LMissher 阅读(238) 评论(0) 推荐(0)