
最短路
luckyone2014
想思路是苦涩艰辛的,但是打代码是愉快的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu4849 Wow! Such City!
#include #include #include using namespace std; #define ll __int64 const int N = 1150; ll INF = 0x3f3f3f3f; ll y[N*N],x[N*N],z[N*N]; ll n,m; ll map[N][N], dist[N]; bool visit[N];原创 2014-07-08 20:54:22 · 615 阅读 · 0 评论 -
HDU 1599 find the mincost route 无向图最小环
杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个景区。现在8600需要你帮他找一条这样的路线,并且花费越少越好。 做法:更新前k-1 个点做为中间点,那么dp[i][j] 和mp[i][k] 和 mp[j][k]之间肯定没有重复的点了。 floyd 的应用题。原创 2015-05-02 11:48:39 · 757 阅读 · 0 评论 -
hdu 5294 Tricks Device 最短路建图+最小割
题意: 1到n点有最短路。 问你 最少破坏多少条路会阻断所有最短路。 再问你 最多破坏多少边,仍有和原始图的最短路一样长度的最短路存在。 做法: 先跑最短路。 然后通过 dist[i]-dist[j] == map[j][i] 如果符合的话 map[j][i]就是 最短路中的一条边。 然后把这些最短路的边 建图,跑最大流,流量是有多少边权相同的重边,跑出来就是最小割,也就是阻断所有最短路的最小花费。花费是每破坏一条路为1。所以出来的值,就是破坏了多少的边。 然后如最大流同样的建边,跑最短路,边权为1原创 2015-07-21 22:24:51 · 1366 阅读 · 0 评论 -
codeforces 144 D. Missile Silos 最短路
题意:给你一个图。 问图中 有多少点 和起点的最短距离是len。边上的点也算。 做法: 把点最近距离 算好。 然后 边上 分两种情况。 if(l1<len&&l2<len&&l1+l2+dis==2*len) ans++; 这种情况是,两边到这个点都是最短的。这个点只用计数一次。 if(l1<len&&l1+dis>len&&l2+(dis-(len-l1))>len) ans++; if(l2<len&&l2+dis>len&&l1+(dis-(len-l2))>len) ans++; 这原创 2015-08-30 18:45:07 · 764 阅读 · 0 评论