#include <bits/stdc++.h>
using namespace std;
#define REP(i, a, b) for(int i = (a), i##end = (b); i <= i##end; ++ i)
#define CLR(i, a) memset(i, a, sizeof(i))
#define REPD(i, a, b) for(int i = (a), i##end = (b); i >= i##end; -- i)
#define LOG(x) std::cerr << #x << ":" << x << '\n'
#define DBG(...) fprintf(stderr, __VA_ARGS__)
#define OK fprintf(stderr, "Passing %s in LINE [%d]\n", __FUNCTION__, __LINE__)
typedef double DB;
DB _BEGIN;
#define _TIME (int((clock() - _BEGIN) / (DB)CLOCKS_PER_SEC * 1000))
#define gc getchar
#define pc putchar
#define endl '\n'
typedef long long LL;
inline LL rd() {
char ch = gc(); LL ret = 0, sgn = 1;
while(ch < '0' || ch > '9') {
if(ch == '-') sgn = -1;
ch = gc();
}
while(ch <= '9' && ch >= '0')
ret = ret * 10 + ch - '0', ch = gc();
return ret * sgn;
}
inline void out(LL x) {
static int buf[50], btp;
if(x < 0) x = -x, pc('-');
if(!x) pc('0');
else {
btp = 0;
for(; x; x /= 10) buf[++ btp] = x % 10;
while(btp) pc('0' + buf[btp --]);
}
}
/**************************************************************/
const int N = 1e5 + 3, M = 2e5 + 3, V = 1e3 + 3;
struct Edge {
int v; LL w;
Edge() {}
Edge(int _v, LL _w) : v(_v), w(_w) {}
} ;
vector<Edge> vec[M << 2];
int idcnt, id[N][V];
LL ds[M << 2];
const LL INF = 1e17;
int n, m, A, B, C;
struct Event {
int x, y, p, q;
} prc[M];
inline LL F(LL g) {
return A * g * g + B * g + C;
}
inline void add(int x, int y, LL c) {
// DBG("%d %d: %lld\n", y, x, c);
vec[x].push_back(Edge(y, c));
}
bool vis[M << 2];
LL Dfs(int x) {
if(vis[x]) return ds[x];
vis[x] = 1;
ds[x] = INF;
LL &ret = ds[x];
REP(i, 0, vec[x].size() - 1) {
LL w = vec[x][i].w, v = vec[x][i].v;
ret = min(ret, w + Dfs(v));
}
// LOG(ret), LOG(x);
return ret;
}
vector<int> fk[N], idd[N];;
int main() {
#ifndef LOCAL
freopen("route.in", "r", stdin);
freopen("route.out", "w", stdout);
#endif
int mx = 0;
n = rd(), m = rd(), A = rd(), B = rd(), C = rd();
REP(i, 1, m) {
int x = rd(), y = rd(), p = rd(), q = rd();
prc[i] = (Event) { x, y, p, q };
if(!id[x][p]) id[x][p] = ++ idcnt, idd[x].push_back(p);
if(!id[y][q]) id[y][q] = ++ idcnt, idd[y].push_back(q);
if(!id[x][q]) id[x][q] = ++ idcnt, idd[x].push_back(q);
if(!id[y][p]) id[y][p] = ++ idcnt, idd[y].push_back(p);
mx = max(p, mx);
mx = max(mx, q);
fk[x].push_back(i);
}
REP(i, 1, n) sort(idd[i].begin(), idd[i].end());
REP(i, 1, m) {
int p = prc[i].p, q = prc[i].q;
int x = prc[i].x, y = prc[i].y;
if(x != 1) REP(lft, 0, idd[x].size() - 1) {
int hh = idd[x][lft], hhh = q;
if(hh > p) break;
add(id[y][hhh], id[x][hh], F(p - hh));
} else {
add(id[y][q], id[x][p], F(p));
}
}
REP(i, 0, mx) if(id[1][i]) {
vis[id[1][i]] = 1, ds[id[1][i]] = 0;
}
LL ans = INF;
REP(i, 0, mx) if(id[n][i]) {
// LOG(i);
if(!vis[id[n][i]]) Dfs(id[n][i]);
if(ds[id[n][i]] < INF) {
ans = min(ans, ds[id[n][i]] + i);
}
}
printf("%lld\n", ans);
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 4.192 ms | 23 MB + 352 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #2 | 4.202 ms | 23 MB + 352 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #3 | 4.147 ms | 23 MB + 216 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #4 | 4.113 ms | 23 MB + 208 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #5 | 8.959 ms | 38 MB + 12 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #6 | 10.431 ms | 43 MB + 148 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #7 | 10.058 ms | 41 MB + 904 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #8 | 10.879 ms | 44 MB + 508 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #9 | 10.553 ms | 43 MB + 708 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #10 | 11.312 ms | 45 MB + 880 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #11 | 9.596 ms | 40 MB + 396 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #12 | 8.942 ms | 38 MB + 20 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #13 | 8.922 ms | 38 MB + 256 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #14 | 9.317 ms | 39 MB + 252 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #15 | 174.269 ms | 538 MB + 640 KB | Runtime Error | Score: 0 | 显示更多 |
| Testcase #16 | 188.703 ms | 544 MB + 632 KB | Runtime Error | Score: 0 | 显示更多 |
| Testcase #17 | 174.709 ms | 539 MB + 148 KB | Runtime Error | Score: 0 | 显示更多 |
| Testcase #18 | 190.175 ms | 544 MB + 944 KB | Runtime Error | Score: 0 | 显示更多 |
| Testcase #19 | 176.9 ms | 540 MB + 212 KB | Runtime Error | Score: 0 | 显示更多 |
| Testcase #20 | 190.158 ms | 545 MB + 24 KB | Runtime Error | Score: 0 | 显示更多 |