| 比赛 |
寒假集训2 |
评测结果 |
AAAAAAEEEEEEAAAAAAAA |
| 题目名称 |
回家路线 |
最终得分 |
70 |
| 用户昵称 |
PXCZM |
运行时间 |
0.879 s |
| 代码语言 |
C++ |
内存使用 |
3.72 MiB |
| 提交时间 |
2026-02-25 11:20:26 |
显示代码纯文本
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,a,b,c;
struct node
{
int y,p,q;
};
vector<node>z[2020];
struct jgt
{
ll ans;
int x,t;
};
queue<jgt>q;
ll minn=1e18;
int main()
{
freopen("rout.in","r",stdin);
freopen("rout.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
cin>>n>>m>>a>>b>>c;
for(int i=1;i<=m;i++)
{
int x;
node tmp;
cin>>x>>tmp.y>>tmp.p>>tmp.q;
z[x].push_back(tmp);
}
jgt tmp;
tmp.ans=tmp.t=0,tmp.x=1;
q.push(tmp);
while(q.size())
{
jgt tmp=q.front();
q.pop();
int x=tmp.x,t=tmp.t;
ll ans=tmp.ans;
if(x==n)
{
minn=min(minn,ans+t);
continue;
}
int len=z[x].size();
for(int i=0;i<len;i++)
{
node rd=z[x][i];
if(t>rd.p) continue;
int d=rd.p-t;
ll ans1=ans+a*d*d+b*d+c;
jgt to;
to.x=rd.y,to.t=rd.q,to.ans=ans1;
q.push(to);
}
}
cout<<minn;
return 0;
}