傳送門
這個題意描述的狗屁不通。。。其實大概就是
然後思路就很簡單啊,我們列舉最短路的邊,依次斷掉每一條同時再跑一遍最短路,統計一下最大值即可。1-n有m條邊
但m條邊中可能會有一條邊無法通過
求出時間t,保證時間t內無論哪條路無法通過,都能滿足有一條從1-n路徑總時間小於或等於t的最短路
通過乙個pre陣列可以實現列舉最短路的邊,原理很簡單:最短路上的每乙個點,最後被鬆弛的那一次就是最關鍵的邊。
#include#define n 1005#define m 10000005
using namespace std;
int n,m,first[n],tot,zdl[n],max_cost,pre[n];
const int inf=0x3f3f3f3f;
bool vis[n],is_first;
struct node
edge[2*m];
inline void addedge(int x,int y,int z)
queue q;
int spfa(int s)
is_first=true;
max_cost=spfa(1);
is_first=false;
for(int i=pre[n];i;i=pre[edge[i].from])
cout<
洛谷 P1186 瑪麗卡
這道題題目真的想吐槽一下.是在機房同學的解釋下才看懂的。就是讓你求在可以刪一條邊的情況下,並且刪後保證可以到達終點時,求刪了後的最大的最短路徑。70分暴力思路 列舉刪邊,然後跑一下最短路即可,思路很簡單,下面給出70分 include using namespace std vector e 101...
洛谷P1186瑪麗卡
先跑一遍最短路,將最短路的路徑記錄下來,然後列舉每一條最短路的邊,將其斷掉,記錄此時的1 n的時間,取其中最大的乙個時間即為所求。通過 cut 和 f 進行操作 注意這個題是個稠密圖,可能會卡 spfa 所以我用了堆優化 dijk include include include include in...
洛谷 P1186 瑪麗卡
麥克找了個新女朋友,瑪麗卡對他非常惱火並伺機報復。因為她和他們不住在同乙個城市,因此她開始準備她的長途旅行。在這個國家中每兩個城市之間最多只有一條路相通,並且我們知道從乙個城市到另乙個城市路上所需花費的時間。麥克在車中無意中聽到有一條路正在維修,並且那兒正堵車,但沒聽清楚到底是哪一條路。無論哪一條路...