当前位置: 首页 > news >正文

洛谷---P1629 邮递员送信

题目描述

有一个邮递员要送东西,邮局在节点 1。他总共要送 n−1 样东西,其目的地分别是节点 2 到节点 n。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 m 条道路。这个邮递员每次只能带一样东西,并且运送每件物品过后必须返回邮局。求送完这 n−1 样东西并且最终回到邮局最少需要的时间。

输入格式

第一行包括两个整数,n 和 m,表示城市的节点数量和道路数量。

第二行到第 (m+1) 行,每行三个整数,u,v,w,表示从 u 到 v 有一条通过时间为 w 的道路。

输出格式

输出仅一行,包含一个整数,为最少需要的时间。

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
const int INF=0x3f3f3f3f;
const int N=1010;
int n,m;
int dis[N*2];
void dij(vector<vector<pii>> &g,int start){priority_queue<pii,vector<pii>,greater<pii>> q;dis[start]=0;q.push({dis[start],start});while(!q.empty()){int u=q.top().second;int d=q.top().first;q.pop();if(d>dis[u]) continue;for(auto & x:g[u]){int v=x.first,w=x.second;if(dis[u]+w<dis[v]){dis[v]=dis[u]+w;q.push({dis[v],v});//cout<<"??1";}}}
}
int main(){cin>>n>>m;vector<vector<pii>> gra(2*n+1);for(int i=1;i<=m;++i){int a,b,c;scanf("%d%d%d",&a,&b,&c);gra[a].push_back({b,c});gra[b+n].push_back({a+n,c});}int ans=0;for(int i=1;i<=2*n;++i) dis[i]=INF;dij(gra,1);for(int i=2;i<=n;++i){ans+=dis[i];//cout<<dis[i]<<" ";} dij(gra,1+n);for(int i=n+2;i<=n<<1;++i) ans+=dis[i];cout<<ans<<endl;return 0;
}

相关文章:

  • JavaScript学习教程,从入门到精通,jQuery 单击页面显示自定义动画、元素删除操作、随机抽奖、随机选图并放大语法知识点(37)
  • 理清缓存穿透、缓存击穿、缓存雪崩、缓存不一致的本质与解决方案
  • iro.js 非常方便好用的 Web 颜色选择器
  • 【Redis篇】linux 7.6安装单机Redis7.0(参数优化详解)
  • 【容器化】Docker容器技术入门基础教程
  • 端口隔离基本配置
  • 如何保障服务器租用中的数据安全?
  • ‌2.4GHz无线通信天线布局与优化方法
  • 基于C++的IOT网关和平台7:github项目ctGateway设备协议开发指南
  • AutoDL+SSH在vscode中远程使用GPU训练深度学习模型
  • 论文AI率降低 教程(包过)
  • 分布式、高并发-Day03
  • 人工智能与智能合约:如何用AI优化区块链技术中的合约执行?
  • Paramiko 性能优化详解
  • 生成了一个AI算法
  • 华为设备端口隔离
  • 【Azure Redis】Redis导入备份文件(RDB)失败的原因
  • NVIDIA Halos:智能汽车革命中的全栈式安全系统
  • Selenium模拟人类,操作网页的行为(全)
  • 强啊!Oracle Database 23aiOracle Database 23ai:使用列别名进行分组排序!
  • 8大类1000多支,中国红十字会已建成10万人规模救援队伍
  • 谢晖不再担任中超长春亚泰队主教练:战绩不佳主动请辞
  • 六大车企一季报:比亚迪近92亿净利稳居第一,多家车企营收下滑
  • 印巴矛盾已达近年“最高点”:军政经文全面紧张,巴将向联合国通报局势
  • 新闻1+1丨多地政府食堂开放“舌尖上的服务”,反映出怎样的理念转变?
  • 印度扩大对巴措施:封锁巴基斯坦名人账号、热门影像平台