1975 Sdoi2010 魔法豬學院

2021-08-17 12:37:57 字數 1230 閱讀 1932

題目鏈結

題目大意:找出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 今天就在...