洛谷P1186瑪麗卡

2022-04-05 21:33:57 字數 798 閱讀 1383

先跑一遍最短路,將最短路的路徑記錄下來,然後列舉每一條最短路的邊,將其斷掉,記錄此時的1-n的時間,取其中最大的乙個時間即為所求。

(通過 $ cut $ 和 $ f $ 進行操作)

注意這個題是個稠密圖,可能會卡 $ spfa $ ,所以我用了堆優化 $ dijk $ 。

#include #include #include #include #include using namespace std;

const int maxn = 1005;

const int maxm = 500005;

inline int read()while(ch >= '0' && ch <= '9')return x * f;}

int n,m,u,v,w;

int head[maxn],tot;

int dis[maxn],f[maxn],ans;

bool flag,cut[maxn][maxn];

struct edgeedge[maxm << 1];

struct node

} ;void add(int u,int v,int w)

void dijk(int s) );

while(!q.empty()));

}} }

} int main()

dijk(1);

flag = 1;

for(int i=n;i!=1;i=f[i])

printf("%d\n",ans);

return 0;

}

洛谷 P1186 瑪麗卡

這道題題目真的想吐槽一下.是在機房同學的解釋下才看懂的。就是讓你求在可以刪一條邊的情況下,並且刪後保證可以到達終點時,求刪了後的最大的最短路徑。70分暴力思路 列舉刪邊,然後跑一下最短路即可,思路很簡單,下面給出70分 include using namespace std vector e 101...

洛谷 P1186 瑪麗卡

麥克找了個新女朋友,瑪麗卡對他非常惱火並伺機報復。因為她和他們不住在同乙個城市,因此她開始準備她的長途旅行。在這個國家中每兩個城市之間最多只有一條路相通,並且我們知道從乙個城市到另乙個城市路上所需花費的時間。麥克在車中無意中聽到有一條路正在維修,並且那兒正堵車,但沒聽清楚到底是哪一條路。無論哪一條路...

洛谷 P1186 瑪麗卡

麥克找了個新女朋友,瑪麗卡對他非常惱火並伺機報復。因為她和他們不住在同乙個城市,因此她開始準備她的長途旅行。在這個國家中每兩個城市之間最多只有一條路相通,並且我們知道從乙個城市到另乙個城市路上所需花費的時間。麥克在車中無意中聽到有一條路正在維修,並且那兒正堵車,但沒聽清楚到底是哪一條路。無論哪一條路...