题意简述
n n n个点 m m m条边的无向图,点边均有权。给定 b b b。请你找到一个从1到n的路使得边权和<=b且点权的最大值最小。
思路
二分+最短路。对于一个mid,把所有点权<=mid的点之间连边,跑最短路,看是否<=b即珂。
代码
#include <bits/stdc++.h>
using namespace std;
namespace Flandre_Scarlet
{
#define N 155555
#define int long long
#define F(i,l,r) for(int i=l;i<=r;++i)
#define D(i,r,l) for(int i=r;i>=l;--i)
#define Fs(i,l,r,c) for(int i=l;i<=r;c)
#define Ds(i,r,l,c) for(int i=r;i>=l;c)
#define Tra(G,i,u) for(int i=G.Start(u),__v=G.To(i);~i;i=G.Next(i),__v=G.To(i))
#define MEM(x,a) memset(x,a,sizeof(x))
#define FK(x) MEM(x,0)
class Graph
{
public:
int head[N];
int EdgeCount;
struct Edge
{
int To,Label,Next;
}Ed[N<<1];
void clear(int _V=N,int _E=N<<1)
{
memset(Ed,-1,sizeof(Edge)*(_E));
memset(head,-1,sizeof(int)*(_V));
EdgeCount=-1;
}
void AddEdge(int u,int v,int</

本文详细介绍了洛谷第1462题的解题思路,主要涉及二分查找结合最短路算法解决在给定边权和限制下,如何使点权的最大值最小的问题。通过建立无向图并调整点权,利用最短路算法验证条件,从而找出最优解。
最低0.47元/天 解锁文章
412

被折叠的 条评论
为什么被折叠?



