ccf行车路线
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include<bits/stdc++.h> using namespace std; const long long INF = 1e18; int n,m; struct node{ int to; long long cost; }; struct edge{ int id; long long cost; int len; bool operator < ( const edge & a) const { return cost > a.cost; } }; vector<node> G[510][2]; long long d[510]; priority_queue<edge>que; long long p2( long long a){ return a * a; } int solve(){ fill(d,d+n+1,INF); d[1] = 0; que.push({1,0,0}); while (!que.empty() ){ edge a = que.top(); que.pop(); int v = a.id; if (v == n) break ; if (d[v] < a.cost) continue ; for ( int i=0;i<G[v][0].size();i++){ node e = G[v][0][i]; if (d[e.to] > d[v] + e.cost){ d[e.to] = d[v] + e.cost; que.push(edge{e.to,d[e.to],0}); } } for ( int i=0;i<G[v][1].size();i++){ node e = G[v][1][i]; int cost = p2(a.len+e.cost)-p2(a.len); if (d[e.to] > d[v] + cost){ d[e.to] = d[v] + cost; que.push(edge{e.to,d[e.to],a.len+e.cost}); } } } return d[n]; } int main () { scanf ( "%d %d" ,&n,&m); for ( int i=1;i<=m;i++){ int t,a,b; long long c; scanf ( "%d %d %d %lld" ,&t,&a,&b,&c); G[a][t].push_back({b,c}); G[b][t].push_back({a,c}); } cout << solve() <<endl; return 0; } |
80分的
转载于:https://www.cnblogs.com/Draymonder/p/7966395.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现