| 比赛 |
寒假集训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
*/