在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量
有一天他醒來後發現自己居然到了聯盟的主城暴風城
在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪
在艾澤拉斯,有n個城市。編號為1,2,3,…,n。
城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進而損失一定的血量。
沒經過乙個城市,都會被收取一定的過路費(包括起點和終點)。路上並沒有收費站。
假設1為暴風城,n為奧格瑞瑪,而他的血量最多為b,出發時他的血量是滿的。
歪嘴哦不希望花很多錢,他想知道,在可以到達奧格瑞瑪的情況下,他所經過的所有城市中最多的一次收取的費用的最小值是多少。
第一行3個正整數,n,m,b。分別表示有n個城市,m條公路,歪嘴哦的血量為b。
接下來有n行,每行1個正整數,fi。表示經過城市i,需要交費fi元。
再接下來有m行,每行3個正整數,ai,bi,ci(1<=ai,bi<=n)。表示城市ai和城市bi之間有一條公路,如果從城市ai到城市bi,或者從城市bi到城市ai,會損失ci的血量。
僅乙個整數,表示歪嘴哦交費最多的一次的最小值。
如果他無法到達奧格瑞瑪,輸出afk。
對於60%的資料,滿足n≤200,m≤10000,b≤200
對於100%的資料,滿足n≤10000,m≤50000,b≤1000000000
對於100%的資料,滿足ci≤1000000000,fi≤1000000000,可能有兩條邊連線著相同的城市。
看到最大值最小最小值最大就要想到二分答案了
思路就很明確了,二分一下交費最多作為限制跑spfa,看到是否能達終點
一開始寫的是二分c的值,然後其實可以二分c的下標,會快很多
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define debug puts("-----")
#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)
#define drp(i, st, ed) for (int i = st; i >= ed; i -= 1)
#define fill(x, t) memset(x, t, sizeof(x))
#define min(x, y) x#define max(x, y) x>y?x:y
#define pi (acos(-1.0))
#define eps (1e-8)
#define inf (1<<30)
#define ll long long
#define db double
#define ld long double
#define n 10001
#define e n * 16 + 1
#define l 255
using
namespace
std;
struct edgee[e];
bool inqueue[n];
int cost[n], dis[n], ls[n], c[n];
int edgecnt;
inline
int read()
ch = getchar();
}while (ch <= '9' && ch >= '0')
return x * v;
}inline
int addedge(int &cnt, const
int &x, const
int &y, int w = 0); ls[x] = cnt;
return0;}
inline
int spfa(const
int &st, const
int &ed, const
int &res)}}
inqueue[now] = false;
}return dis[ed];
}int main(void)
sort(c + 1, c + n + 1);
edgecnt = 1;
rep(i, 1, m)
int ans = inf;
for (int l = 0, r = n;l <= r;)else
if (hp > lim)
}if (ans == inf)else
return
0;}
通往奧格瑞瑪的道路(洛谷 1462)
在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進...
洛谷1462 通往奧格瑞瑪的道路
洛谷1462 通往奧格瑞瑪的道路 題目背景 在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 題目描述 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著...
洛谷 1462 通往奧格瑞瑪的道路
問題描述 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進而損失一定的血量。沒經過乙個城市,都會被收取一定的過路費 包括起點和終點 路上並沒有收費站。假設1為暴風城,n為奧格瑞瑪,而他的血量最多為b,出發時他的血量是...