| 比赛 |
csp2025模拟练习3 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
Minimum Cost Roads |
最终得分 |
100 |
| 用户昵称 |
梦那边的美好ME |
运行时间 |
0.740 s |
| 代码语言 |
C++ |
内存使用 |
3.90 MiB |
| 提交时间 |
2025-10-30 09:37:03 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
struct node{
ll u,v,l,p;
bool operator<(node aa){
if(l!=aa.l) return l<aa.l;
return p<aa.p;
}
}a[2100];
ll n,m;
ll ans;
vector<pair<ll,ll> > g[2100];
ll dis[2100],vis[2100];
priority_queue<pair<ll,ll> > q;
void dijkstra(ll nw,ll to) {
memset(dis,0x3f,sizeof dis);
memset(vis,0,sizeof vis);
dis[nw]=0;
q.push(make_pair(0,nw));
while(!q.empty()){
ll u=q.top().second;
q.pop();
if(vis[u]) continue;
ll v;
for(int i=0;i<g[u].size();i++){
v=g[u][i].first;
ll w=g[u][i].second;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
q.push(make_pair(-dis[v],v));
}
}
}
}
int main(){
freopen("Roads.in","r",stdin);
freopen("Roads.out","w",stdout);
ios::sync_with_stdio(0);cin.tie(0);
cin>>n>>m;
for (int i=1;i<=m;i++){
cin>>a[i].u>>a[i].v>>a[i].l>>a[i].p;
}
sort(a+1,a+m+1);
ll u,v,l,p;
for(int i=1;i<=m;i++){
u=a[i].u;
v=a[i].v;
l=a[i].l;
p=a[i].p;
dijkstra(u,v);
if(dis[v]>l){
ans+=p;
g[u].push_back(make_pair(v,l));
g[v].push_back(make_pair(u,l));
}
}
cout<<ans<<endl;
return 0;
}