比赛 寒假集训2 评测结果 WWWWWWTTTTTTAAAAWWWA
题目名称 回家路线 最终得分 25
用户昵称 杨蕙宇 运行时间 6.901 s
代码语言 C++ 内存使用 17.50 MiB
提交时间 2026-02-25 11:41:50
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll M=2e5+10;
const ll INF=1e18;
ll n,m,a,b,c,idx=0,ans=INF;
struct edge{
    ll id,a,b,s,t,val;
}e[M];
vector<ll>pu[M],pv[M];
ll work(ll p){
    return a*p*p+b*p+c; 
}
//void ce1(){
//    for(int i=1;i<=m;i++){
//        edge f=e[i];
//        cout<<i<<" e "<<f.id<<" "<<f.a<<" "<<f.b<<" "<<f.s<<" "<<f.t<<" "<<f.val<<endl;
//    }
//    cout<<endl<<" n "<<endl;
//    for(int i=1;i<=n;i++){
//        for(int j=0;j<pu[i].size();j++){
//            cout<<i<<" u "<<pu[i][j]<<endl;
//        }
//        for(int j=0;j<pv[i].size();j++){
//            cout<<i<<" v "<<pv[i][j]<<endl;
//        }
//        cout<<endl;
//    }
//}
int main(){
    freopen("rout.in","r",stdin);
    freopen("rout.out","w",stdout);
    cin>>n>>m>>a>>b>>c;
    for(int i=1;i<=m;i++){
        ll u,v,s,t;
        cin>>u>>v>>s>>t;
        e[++idx]=(edge{idx,u,v,s,t,INF});
        pu[v].push_back(idx);
        pv[u].push_back(idx);
    }
    e[0]=(edge{0ll,0ll,1ll,0ll,0ll,0ll});
    pu[1].push_back(0ll);
    for(int i=1;i<n;i++){
        for(int k=0;k<pv[i].size();k++){
//            edge y=e[pv[i][k]];
            for(int j=0;j<pu[i].size();j++){
//                edge x=e[pu[i][j]];
                ll sum=work(e[pv[i][k]].s-e[pu[i][j]].t);
                e[pv[i][k]].val=min(e[pv[i][k]].val,sum+e[pu[i][j]].val);
            }
        }
    } 
    for(int i=0;i<pu[n].size();i++){
        edge f=e[pu[n][i]];
        ans=min(ans,f.val+f.t);
    }
    cout<<ans;
    return 0;
}
/*
3 4 1 5 10
1 2 3 4
1 2 5 7
1 2 6 8
2 3 9 10
*/