比赛 csp2025模拟练习3 评测结果 AATAAAAAAA
题目名称 Minimum Cost Roads 最终得分 90
用户昵称 健康铀 运行时间 5.572 s
代码语言 C++ 内存使用 9.40 MiB
提交时间 2025-10-30 10:37:51
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct E{int u,v,l,c;}e[2005];
bool cmp(E a,E b){return a.l==b.l?a.c<b.c:a.l<b.l;}
long long d[2005][2005],ans;
int main(){
	freopen("Roads.in","r",stdin);
	freopen("Roads.out","w",stdout);
    int n,m;cin>>n>>m;
    for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)d[i][j]=1e18;
    for(int i=1;i<=n;i++)d[i][i]=0;
    for(int i=1;i<=m;i++)cin>>e[i].u>>e[i].v>>e[i].l>>e[i].c;
    sort(e+1,e+m+1,cmp);
    for(int i=1;i<=m;i++){
        int u=e[i].u,v=e[i].v,l=e[i].l,c=e[i].c;
        if(d[u][v]>l){
            ans+=c;
            for(int x=1;x<=n;x++)
                for(int y=1;y<=n;y++){
                    if(d[x][y]>d[x][u]+l+d[v][y])d[x][y]=d[x][u]+l+d[v][y];
                    if(d[x][y]>d[x][v]+l+d[u][y])d[x][y]=d[x][v]+l+d[u][y];
                }
        }
    }
    cout<<ans;
    return 0;
}