題目鏈結
題目大意:找出1~k短路
題解:x的估價函式f(
x)取x到結束節點的最短路,這個是準確值,因此複雜度***
按廣搜的方式擴充套件節點,每次優先擴充套件估價+實際最小的節點
第i次擴充套件到目標節點,代表找到了第i短路
我的收穫:org
#include
#include
#include
#include
#include
#include
#include
#define maxn 5010
#define maxm 201000
#define inf 1e12
using
namespace
std;
struct yts
; double dis[maxn];
int q[maxn];
bool vis[maxn];
bool
operator
<(yts x,yts y)
priority_queueq;
int head[maxn],to[maxm],next[maxm];
double len[maxm],len[maxm];
int head[maxn],to[maxm],next[maxm];
int n,m,num,ans,x,y,s,t,num;
double e,z;
void addedge(int x,int y,double z)
void add(int x,int y,double z)
void spfa()
} vis[x]=0;
} } void astar()
);
while (!q.empty())
if (x.g+dis[x.now]>e) continue;
for (int p=head[x.now];p;p=next[p]) q.push((yts));
} } int main()
s=1,t=n;
spfa();
astar();
printf("%d\n",ans);
return
0;
}
bzoj1975 Sdoi2010 魔法豬學院
傳送門 思路 可以用a 做,但是要手寫堆或者用pb ds的堆,不然會被卡空間 原題256m,bzoj64m.設出發點為s,結束點為t,邊權為val e 邊的出發點為head e 到達點為tai e 也可以用 方法,參見俞鼎力的 堆的可持久化和k短路 首先我們建出最短路樹,如果有多條任取一條以保證其樹...
SDOI2010 魔法豬學院
點此看題 直接講人話把,網上的什麼性質和結論看得我想吐。首先建出以t tt為根的最短路樹,在反圖上跑最短路然後建樹,多條滿足條件的邊任選即可。我們考慮用非樹邊替換樹邊,定義一條邊 u,v u,v u,v 的權值是 c d is u di s v c dis u dis v c dis u d is ...
SDOI2010 魔法豬學院
感謝 kczno1 x o r 提供hack資料 ipig在假期來到了傳說中的魔法豬學院,開始為期兩個月的魔法豬訓練。經過了一周理論知識和一周基本魔法的學習之後,ipig對豬世界的世界本原有了很多的了解 眾所周知,世界是由元素構成的 元素與元素之間可以互相轉換 能量守恆 能量守恆 ipig 今天就在...