本文同步更新於洛谷部落格
給定一張 \(n\) 個點 \(m\) 條邊的帶權無向圖,求刪除一條邊後,最短路的最大值。
不難發現,如果刪除的邊不在原圖的最短路上,對結果是沒有影響的。因此我們要先跑一邊最短路,用 \(pre\) 陣列記錄下原圖最短路上的每乙個點。接著我們暴力列舉將每一條邊刪除後的最短路,取最大值即可。然後我們開開心心的交上去,發現 tle 了。
所以我們需要優化,但是不會線段樹優化怎麼辦?不會斐波那契堆怎麼辦?沒關係,我們可以用clock
函式來控制程式執行的時間,在快要超時的時候輸出最優解即可。
#includeusing namespace std;
const int maxn=1005;
int n,m,g[maxn][maxn],dis[maxn],minn,k,ans,x,y;
bool vis[maxn],flag;
int pre[maxn];
int min(int a,int b)
{ return a這應該是我提交次數最多的一道題了……
洛谷 P1186 瑪麗卡
這道題題目真的想吐槽一下.是在機房同學的解釋下才看懂的。就是讓你求在可以刪一條邊的情況下,並且刪後保證可以到達終點時,求刪了後的最大的最短路徑。70分暴力思路 列舉刪邊,然後跑一下最短路即可,思路很簡單,下面給出70分 include using namespace std vector e 101...
洛谷P1186瑪麗卡
先跑一遍最短路,將最短路的路徑記錄下來,然後列舉每一條最短路的邊,將其斷掉,記錄此時的1 n的時間,取其中最大的乙個時間即為所求。通過 cut 和 f 進行操作 注意這個題是個稠密圖,可能會卡 spfa 所以我用了堆優化 dijk include include include include in...
洛谷 P1186 瑪麗卡
麥克找了個新女朋友,瑪麗卡對他非常惱火並伺機報復。因為她和他們不住在同乙個城市,因此她開始準備她的長途旅行。在這個國家中每兩個城市之間最多只有一條路相通,並且我們知道從乙個城市到另乙個城市路上所需花費的時間。麥克在車中無意中聽到有一條路正在維修,並且那兒正堵車,但沒聽清楚到底是哪一條路。無論哪一條路...