洛谷 P1462 通往奧格瑞瑪的道路

2022-05-20 23:38:06 字數 1641 閱讀 9550

思路:二分最大金錢數,最短路需要耗費的血量。

直接二分最大金幣數,無論該金幣數是否出現在圖上,通過二分的區間縮小即金幣範圍縮小,

一定會得到乙個圖上存在的最小的最大金幣數。

最短路耗血量,只需要有一條能滿足該最大金幣數即可。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 

8 #include 9 #include

10 #include 11 #include 12 #include 13

using

namespace

std;

1415 typedef long

long

ll;16

#define inf 1e9

17#define rep(i,j,k) for(int i = (j); i <= (k); i++)

18#define rep__(i,j,k) for(int i = (j); i < (k); i++)

19#define per(i,j,k) for(int i = (j); i >= (k); i--)

20#define per__(i,j,k) for(int i = (j); i > (k); i--)

2122

const

int n = (int)1e4 + 10;23

inthead[n];

24int

f[n];

25int

cnt;

26bool

vis[n];

27ll dis[n];

28int

n,m,tx;

29int

u,v,w;

3031

struct

edgee[5 * n << 1

];36

37struct

node

44};

45 priority_queueque;

4647

void add(int u,int v,int

w)53

54ll dijkstra(ll mid)

61 dis[1] = 0

;62 que.push(node);

6364

intu,v,w;

65while(!que.empty()));79}

80}81}

8283

return

dis[n];84}

8586

intmain()

9899 ll l = 1,r =(ll)1e9;

100ll mid;

101int ans =inf;

102bool ok = false

;103

while(l <=r)

111}

112if(!ok) printf("

afk\n");

113else printf("

%d\n

",ans);

114115

getchar(); getchar();

116return0;

117 }

洛谷 P1462通往奧格瑞瑪的道路

題目背景 background 在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 題目描述 description 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的...

洛谷 P1462 通往奧格瑞瑪的道路

題目背景 在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 題目描述 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,...

洛谷 P1462 通往奧格瑞瑪的道路

在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進...