#1 物流网络解题
2026-09-01 19:34:51
发布于:广东
19阅读
0回复
0点赞
第1次正经解题!!!
难度:普及+/提高
比较难的七级题,比八级简单一点
正文:
关系到了一个“最短路径”的问题。自己去查
之后用BFS(广搜)就能摆平
#include <bits/stdc++.h>
using namespace std;
struct node{int f,w,b;};struct point{int zh,d;};
long n,m,zh=1e18,dis[5001];vector<node>a[5001];
bool operator<(point x,point y){return x.d>y.d;}
void bfs(long x,long dis[]){
for(int i=0;i<=n;i++)dis[i]=1e18;dis[1]=0;
priority_queue<point>q;q.push({1,0});
while(!q.empty()){
int z=q.top().zh,d=q.top().d;q.pop();
for(node i:a[z]){
int fp=i.f,wp=i.w,bp=i.b;
if(bp>x)continue;if(bp==x)wp=0;
if(dis[z]+wp<dis[fp]){
dis[fp]=dis[z]+wp;
q.push({fp,dis[fp]});
}
}
}
}
int main(){
set<int>bum;
cin>>n>>m;
while(m--){
int u,v,w,b;cin>>u>>v>>w>>b;
a[u].push_back({v,w,b});a[v].push_back({u,w,b});
bum.insert(b);}
for(int i:bum){bfs(i,dis);zh=min(zh,dis[n]);}
if(zh==1e18)cout<<"-1";else cout<<zh;
return 0;
}
看完去做一遍吧!You can do it!
这里空空如也








有帮助,赞一个