顯然每次貪心的走最少消耗的路徑即可。那麼也就是找出最短路,次短路,,,k短路之後消耗e的能量的最多的路徑條數。
也就是裸的a*演算法。
#include usingview codenamespace
std;
typedef
double
lf;const
int n=5005, m=200005
;lf d[n], en;
typedef pair
int>pr;
#define mkpr(x, y) make_pair(x, y)priority_queue
, greater>q;
struct
gr e[m];
intn, ihead[n], cnt;
void add(int x, int
y, lf w) ; ihead[x]=cnt;
}void
dij()
d[n]=0
; q.push(mkpr((lf)
0, n));
while
(q.size())
vis[x]=1
;
for(int i=ihead[x]; i; i=e[i].next) }}
}intgetans()
else
}for(int i=ihead[x]; i; i=e[i].next)
}return
ans;
}}g, g;
intmain()
g.dij();
printf(
"%d\n
", g.getans());
return0;
}
BZOJ 1975 魔法豬學院(K短路)
題意 給出乙個帶權有向圖。求乙個最大的k使得前k短路的長度之和不大於給定的值sum。思路 首先,求出每個點到n的最短路。接著,使用優先佇列,節點為 d,u 首先將 dis 1 1 進隊。由於d在任意時候為一條1到n的路徑的長度,那麼對於邊,d dis u w dis v 為一條新的路徑的長度。vec...
BZOJ 1975 魔法豬學院(A 手寫堆)
time limit 10 sec memory limit 64 mb submit 1941 solved 595 submit status discuss ipig在假期來到了傳說中的魔法豬學院,開始為期兩個月的魔法豬訓練。經過了一周理論知識和一周基本魔法的學習之後,ipig對豬世界的世界本...
1975 Sdoi2010 魔法豬學院
題目鏈結 題目大意 找出1 k短路 題解 x的估價函式f x 取x到結束節點的最短路,這個是準確值,因此複雜度 按廣搜的方式擴充套件節點,每次優先擴充套件估價 實際最小的節點 第i次擴充套件到目標節點,代表找到了第i短路 我的收穫 org include include include includ...