原题传送门: Luogu P1948 题意:给出一张图,要求在1到n的某个路径上去掉k条边,使得剩下的边中最大值最小 题意分析完之后,看那个使最大值最小显然是二分答案。 然后至于check,可以在遍历的时候把边权小于等于mid的值都视作0,大于的都视作1 然后进行SPFA,判断dis[n]是否小于等于k就行了 附代码: #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; const int MAXN=2e4+5; struct edge{ int x,y,c; bool operator <(const edge &b)const{ return c<b.c; } }s[MAXN]; int n,m,tot,x,y,c,dis[MAXN],inS[MAXN],p,k,cnt,ans; int node[MAXN],nex[MAXN],A[MAXN],cos[MAXN]; void add(int x,int y,int c){ node[++tot]=y;nex[tot]=A[x];A[x]=tot;cos[tot]=c; } bool chk(int rec)