【解題思路】
spfa+二分
二分的條件就是 以當前值為最大值 判斷是否有一條路可以使得
每條邊的收費都小於等於此值 並且 走到終點之後血量不會被扣光
【code】
1 #include 2 #include 3 #include 4 #include 5#define inf 0x3f3f3f3f3f
6using
namespace
std;
7struct
nodee[100005
];12
int h[100005
],t;
13int
n,m,b,ans;
14int dis[100005
];15
int x[100005],y[100005
];16
int q[100005
],tail,head;
17bool inq[100005
];18
void add(int u,int v,int
x)25
bool spfa(int
mid)44}
45}46}
47if(dis[n]<=b)return
true;48
else
return
false;49
}50intmain()
58int cnt=0;59
for(register int i=1;i<=m;i++)
65 sort(y+1,y+n+1
);66
if(spfa(inf)==false
) 70
int l=1,r=n;
71while(l<=r)
77else l=mid+1
; 78
} 79 printf("
%d\n
",ans);
80return0;
81 }
1 #include 2 #include 3 #include 4 #include 5#define inf 0x3f3f3f3f3f
6using
namespace
std;
7struct
nodee[100005
];12
int h[100005
],t;
13int
n,m,b,ans;
14int dis[100005
];15
int x[100005],y[100005
];16
int q[100005
],tail,head;
17bool inq[100005
];18
void add(int u,int v,int
x)25
bool spfa(int
mid)44}
45}46}
47if(dis[n]<=b)return
true;48
else
return
false;49
}50intmain()
58int cnt=0;59
for(register int i=1;i<=m;i++)
65 sort(y+1,y+n+1
);66
if(spfa(inf)==false
) 70
int l=1,r=n;
71while(l<=r)
77else l=mid+1
; 78
} 79 printf("
%d\n
",ans);
80return0;
81 }
通往奧格瑞瑪的道路(洛谷 1462)
在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進...
洛谷1462 通往奧格瑞瑪的道路
洛谷1462 通往奧格瑞瑪的道路 題目背景 在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 題目描述 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著...
P1462 通往奧格瑞瑪的道路
在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進...