題意:給出乙個帶權有向圖。求乙個最大的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...