
最短路
bestFy
世界上最最最渣的oier.
展开
-
bzoj1491: [NOI2007]社交网络
题面在这里 做法: floyd+DP。 设w[i][j]w[i][j]表示i−ji-j的最短路,f[i][j]f[i][j]表示i−ji-j最短路方案数。 转移就是f[i][j]+=f[i][k]∗f[k][j]f[i][j]+=f[i][k]*f[k][j] 然后再枚举每个点计算一下好了= =/***********************************************原创 2017-12-16 00:13:43 · 270 阅读 · 0 评论 -
codeforces786B - Legacy
题面在这里题意:三种操作: 1.给a->b加一条边 2.给a->[b,c]分别加一条权值相同的边 3.给[a,b]->c分别加一条权值相同的边 然后问一个点到其他点的最短路做法:考虑在线段树上加边 一个点对应一个区间,就把那个点和那个区间所对应的线段树节点编号加边 然后线段树上父亲和儿子再分别连一条权值为0的边 然后就可以直接跑最短路了 好妙啊。代码:/***************原创 2018-01-04 08:22:39 · 360 阅读 · 0 评论 -
bzoj1295: [SCOI2009]最长距离
题面在这里 题意: 给一个n*m地图,有的格子有障碍。只能上下左右走。假如两个格子能够互相到达,那么他们的距离为它们的欧几里得距离。 问你拿掉最多k个障碍,最大的两点间距离时多少。n,m 做法: 发现n和m很小。 于是我们考虑暴力枚举一个点,从这个点spfa求出到所有点的最少要拿掉的障碍数,然后暴力判断每个点是否满足要求,满足即可更新答案。 代码: /***********原创 2018-01-05 15:09:36 · 273 阅读 · 0 评论 -
bzoj1880: [Sdoi2009]Elaxia的路线
题面在这里 题意: 求一个无向图中,两个点对最短路的最长公共路径。 注意给出的x1,y1和x2,y2不一定是从x走到y,可以是y走到x。 做法: 首先无脑跑最短路QAQ.. 事实上,我们要把以x1,y1,x2,y2为起点的最短路都跑出来。 然后对于一条边u,v,边权为w,假如dis[s-u]+dis[v-t]+w == dis[s-t],则u-v这条边是在s-t的最短路上的。原创 2018-01-28 14:27:20 · 328 阅读 · 0 评论