一道最短路的题,找一个买入和卖出相差最高的点即可,我们先以1为起点跑spfa,d1[x]不再表示距离而表示能够经过权值最小的节点的权值即 if(d1[y]>min(d1[x],price[y])){ d1[y]=min(d1[x],price[y]); if(!v[y]) q.push(y),v[y]=1; } 我们在建反图,对于n点再跑spfa,算出最大值即 if(d2[y]<max(d2[x],price[y])){ d2[y]=max(d2[x],price[y]); if(!v[y])…