我們將每個節點的最短距離記錄為如下兩個量:\(arr\) 和 \(into\),分別代表達到當前點的最短距離和滿足當前節點前置條件的最短距離,最短距離在兩者中取大值。
然後硬跑最短路就行了。
**:
# include # include # include # include # define maxn 300005
# define maxm 700005
# define pii std::pair# define mkp std::make_pair
struct edgee[maxm]; int hd[maxn], cnte;
struct nodend[maxn]; int hdnd[maxn], cntn;
int degin[maxn], dis[maxn]; bool vis[maxn];
int arr[maxn], into[maxn]; // 到達時間,可以進入的時間
void adde(int u, int v, int w);
hd[u] = cnte;
}void addn(int from, int to);
hdnd[from] = cntn;
}int main()
for(int i = 1, l, x; i <= n; i++)
} std::priority_queue, std::greater>h;
memset(dis, 0x3f, sizeof(dis)); dis[1] = 0;
memset(arr, 0x3f, sizeof(arr)); arr[1] = 0;
// memset(into ,0x3f, sizeof(into)); into[1] = 0;
h.push(mkp(dis[1], 1)); // degin[1] = 0;
while(h.size())}}
for(int i = hdnd[now]; i; i = nd[i].next)
}} }
printf("%d", dis[n]);
return 0;
}
大陸爭霸 SDOI2010 帶限制最短路
只要你有無限個自爆機械人,你就能為所欲為 斯普林 布拉澤 題目描述 略一句話題意 傑森國有 n 個城市,由 m 條單向道 路連線。傑森國的首都是城市 n 你只需摧毀傑森國首都就能獲勝。為了盡量減小己方的消耗,你決定使用自爆機械人完成這一任務。唯一的困難是,傑森國的一部分城市有結界保護,不破壞掉結界就...
SDOI2010 大陸爭霸 帶限制最短路
首先明確最短路是dp 帶繼承的dp 是有轉移的 bellman沒有順序的鬆弛 複雜度很高 dijk維護乙個正解點集 很快 這道題給最短路加了限制 同時走若干條路,當走過某些點後才能走該點 原轉移為 d x min 新加的轉移為 d x max 可以知道 依然可以維護乙個正解點集 當沒有protect...
1922 Sdoi2010 大陸爭霸
time limit 10 sec memory limit 64 mb submit 1552 solved 682 submit status discuss 在乙個遙遠的世界裡有兩個國家 位於大陸西端的傑森國和位於大陸東端的 克里斯國。兩個國家的人民分別信仰兩個對立的神 傑森國信仰象徵黑暗和毀...