BZOJ 1975 魔法豬學院(K短路)

2021-09-08 14:25:49 字數 560 閱讀 6449

題意:給出乙個帶權有向圖。求乙個最大的k使得前k短路的長度之和不大於給定的值sum。

思路:首先,求出每個點到n的最短路。接著,使用優先佇列,節點為(d,u)。首先將(dis[1],1)進隊。由於d在任意時候為一條1到n的路徑的長度,那麼對於邊,d-dis[u]+w+dis[v]為一條新的路徑的長度。

vector> g[n],g1[n];

double dis[n];

int n,m;

double sum;

struct node

node(int _v,double _dis)

int operator<(const node &a) const

};int inq[n];

void spfa()}}

}priority_queueq;

int cal()

for0(i,sz(g[p.v]))

}return ans;

}int main()

spfa();

pr(cal());

}

BZOJ 1975 魔法豬學院 A 求K短路

顯然每次貪心的走最少消耗的路徑即可。那麼也就是找出最短路,次短路,k短路之後消耗e的能量的最多的路徑條數。也就是裸的a 演算法。include using namespace std typedef double lf const int n 5005,m 200005 lf d n en type...

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...