(題目鏈結)
給出乙個有向圖和一條最短路,問最短路上任意一條邊斷掉,此時的最短路是多少。
聽說這道題正解被江哥插了。。。右轉題解→_→:lmy學長
平衡樹用堆就可以了。
用棧來存要加入堆中的點,不然不好消除標記。
// bzoj3575#include#include#include#include#include#include#include#define ll long long
#define inf (1ll<<60)
#define pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;
const int maxn=200010;
int head[maxn],dis[maxn],vis[maxn],st[maxn],in[maxn];
int n,m,l,cnt,id[maxn],ord[maxn],suf[maxn];
struct edge e[maxn<<1];
struct data
};priority_queuet;
inline void link(int u,int v,int w) ;head[u]=cnt;
}inline void spfa(int u,int v,int k)
else if (dis[e[i].to]>dis[x]+e[i].w)
}} for (int i=1;i<=top;i++) );
in[st[i]]=0; }}
int main()
ord[1]=1;
for (int i=1;i<=l;i++) scanf("%d",&id[i]),ord[e[id[i]].to]=i+1;
for (int i=l;i>=1;i--) suf[e[id[i]].from]=suf[e[id[i]].to]+e[id[i]].w;
memset(dis,0x7f,sizeof(dis));dis[1]=0;
for (int i=1;i<=l;i++)
return 0;
}
bzoj3575 Hnoi2014 道路堵塞
一開始看錯題啦!某一條邊不走的最短路相當於1 沿最短路 x y 沿最短路 n,於是 定義t,表示從起點到最短路上序號r有一條長度為l的非最短路。然後用堆維護即可。慎用memset。tle。include include include include include define n 100005 ...
bzoj3575 Hnoi2014 道路堵塞
總趕腳第二題總是比第三題難。好吧,這題一點思路都沒有 聽說用民科可以過掉大部分資料。我們發現刪邊後的路徑一定是這樣的 起點 若干個原最短路徑上的邊 若干個非最短路徑上的邊 若干個原最短路徑上的邊 終點 我們發現其實就是不走原最短路徑上的乙個區間,並且刪除的邊一定在這個區間上 我們按順序列舉邊,然後從...
bzoj3575 最短路 SPFA 道路堵塞
description a國有n座城市,依次標為1到n。同時,在這n座城市間有m條單向道路,每條道路的長度是乙個正整數。現在,a國 交通部指定了一條從城市1到城市n的路徑,並且保證這條路徑的長度是所有從城市1到城市n的路徑中最短的。不幸 的是,因為從城市1到城市n旅行的人越來越多,這條由交通部指定的...