zoj2008 最短路

题意:给你n个点的有向图,从1点到其他所有点又从其他点回到1点的最短路。

 

思路:可以求一次从1点出发的最短路,再反向建图,再求一次从1出发的最短路,把两次的结果加起来就是题目所求。由于边比较多,

  所以最好用Dijkstra+优先队列,或者SPFA;

 

 

#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
const int maxn = 1000009;
const int inf = 1<<30;
#include<vector>
struct node
{int v,w;node(int v,int w):v(v),w(w){}bool operator < (const node a)const{return w > a.w;}
};
std::vector<node> eg[maxn];
std::priority_queue<node> q;
int n,m;
int vis[maxn];
int dis[maxn];
int a[maxn],b[maxn],c[maxn];void DIJ()
{int i;memset(vis,0,sizeof(vis));for(i=0;i<=n;i++)dis[i] = inf;while(!q.empty())q.pop();dis[1] = 0;vis[1] = 0;int size = eg[1].size();for(i=0; i < size; i++){q.push(node(eg[1][i].v,eg[1][i].w));dis[eg[1][i].v] = eg[1][i].w;}while(!q.empty()){int u = q.top().v;int w = q.top().w;q.pop();if(!vis[u]){vis[u] = 1;size = eg[u].size();for(i=0; i<size; i++){int v = eg[u][i].v;int w = eg[u][i].w;if(!vis[v] && dis[u] + w < dis[v]){dis[v] = dis[u] + w;q.push(node(v,dis[v]));}}}}}
void work()
{int i,sum = 0;DIJ();for(i=2; i<=n; i++)   sum += dis[i]; //printf("%d ",dis[i]);}for(i=0; i<=n; i++) eg[i].clear();for(i=0;i<m;i++)    eg[b[i]].push_back(node(a[i],c[i]));//  printf("\n");DIJ();for(i=2; i <= n;i++) sum += dis[i]; //printf("%d ",dis[i]);}printf("%d\n",sum);
}
void input()
{int i;scanf("%d%d",&n,&m);for(i=0 ;i < m; i++)  scanf("%d%d%d",&a[i],&b[i],&c[i]);for(i=0;i<=n;i++)     eg[i].clear();for(i=0;i<m;i++)      eg[a[i]].push_back(node(b[i],c[i]));
}
int main()
{int t;scanf("%d",&t);while(t--){input();		work();}return 0;
}/*3
2 2
1 2 13
2 1 33
4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50
2 2
1 2 13
2 1 33*/

 

转载于:https://www.cnblogs.com/BruceNoOne/p/3900518.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

steam程序员php玩的游戏,Steam:又一款烧脑的编程游戏上线,宅男回家了也要开心加班!...

原标题&#xff1a;Steam&#xff1a;又一款烧脑的编程游戏上线&#xff0c;宅男回家了也要开心加班&#xff01;要是小伙伴们喜欢什么解谜、编程类游戏&#xff0c;相信Steam上的《程序员升职记》应该都是绿了的游戏&#xff0c;这款给宅男们设计智力游戏能让你享受到从底层到…

模式(一)javascript设计模式

模式有三种&#xff1a;Architectural Pattern、Design Pattern、Coding Pattern&#xff0c;即&#xff1a;框架模式、设计模式、编程模式。本文主要讲解javascript中的设计模式&#xff0c;好的设计模式能够提高代码的重用性&#xff0c;可读性&#xff0c;使代码更容易的维护…

matlab如何提高运算速速,如何提高以下程序的运算速度及有选择性的保存数据?...

多谢管理员math的关注。“空位随机游走过程”有英语我也不知道如何说。只知道“空位”叫做&#xff1a;vacancy我解解释一下整个过程。不过过程比较长一些&#xff01;为了说明问题&#xff0c;我就举个例子如&#xff1a;Fe-Mg二元合金&#xff0c;其中Mg占3%&#xff0c;空位…

GPS经纬度换算成XY坐标

/// <summary>///GPS经纬度换算成x,y坐标 /// </summary>/// <param name"l"> 精度 </param>/// <param name"B"> 纬度 </param>/// <param name"xc"> X坐标 </param>/// <param na…

Valid Sudoku

这道题是个细节实现题&#xff0c;只要把valid sudoku满足的三个条件判断一下即可。 valid sudoku需满足下列三个条件&#xff1a; 1&#xff09;每一行数字1~9有且只出现一次。2&#xff09;每一列数字1~9有且只出现一次。3&#xff09;对于每个3*3的sub-box&#xff08;用i3、…

CosiWorksNew

CMainFrameCBCGPRibbonBar m_wndRibbonBar; 工具栏CreateRibbonBar() 构建工具栏CWProjectBar m_wndProjectBar; 左侧的工程窗口CWModelLibBar m_wndModellibBar; 左侧的模型窗口ShowControlBar(CBCGPDockingControlBar*, BOOL, BOOL, BOOL) 显示或隐藏左侧窗…

make xdb file.php,SCWS入门使用指南

B 结合php使用要想在php中使用scws分词工具&#xff0c;必须安装php扩展&#xff0c;并且必须要求php与scws安装在同一台机器。cd /usr/local/src/scws-1.2.2/usr/local/php-5.3.8/bin/phpize ./configure --with-scws/usr/local/scws --with-php-config/usr/local/php-5…

异步编程中的最佳做法(Async/Await) --转

近日来&#xff0c;涌现了许多关于 Microsoft .NET Framework 4.5 中新增了对 async 和 await 支持的信息。 本文旨在作为学习异步编程的“第二步”&#xff1b;我假设您已阅读过有关这一方面的至少一篇介绍性文章。 本文不提供任何新内容&#xff0c;Stack Overflow、MSDN 论坛…

spline 用法

控制actor在level中沿着一个spline path运动。 由finterp to 函数的输出数值来控制每一帧actor运动的距离。 从开始位置到spline path的终点的时间&#xff0c;是1/interp speed。假如我们控制actor从开头到终点运动的总时间是1秒&#xff0c;那么 interp speed就传入0.5&#…

php 时间戳获取周几,PHP实现根据时间戳获取周几的方法,php戳获取周_PHP教程

PHP实现根据时间戳获取周几的方法&#xff0c;php戳获取周本文实例讲述了PHP实现根据时间戳获取周几的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;获取某个时间戳的周几&#xff0c;以及未来几天以后的周几其中&#xff1a;$time 代表时间$i 今天开始具体示例…

HTML5 Canvas 高仿逼真 3D 布料图案效果

HTML5 规范引进了很多新特性&#xff0c;其中最令人期待的之一就是 Canvas 元素&#xff0c;HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法&#xff0c;非常强大。下面给大家分享一个 HTML5 Canvas 绘制的 3D 布料图案效果。 温馨提示&#xff1a;为保证最佳的效果&#…

oracle中exp/imp讲解

Exp/Imp是oracle备份数据的两个命令行工具 1.本地数据库导入导出 1.导出 &#xff08;运行---cmd中操作&#xff09; exp 用户名/密码数据库实例名file本地存放路径 eg: exp jnjp/jnjpORCL fileC:/jnjp.dmp2.导入 imp 用户名/密码数据库实例名file本地数据库文件存放路径fully …

用toad实现oracle数据迁移,Oracle 使用TOAD实现导入导出Excel数据

在Oracle应用程序的开发过程中&#xff0c;访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作&#xff0c;对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad。在Toad的新版本中&#xff0c;还加入了DBA模块&a…

本地windows主机无法访问虚拟机里主机解决办法

一&#xff1a;设置虚拟机里IP&#xff0c;使其与本地计算机IP在同一网段 本地计算机网络IP设置如下&#xff1a; 虚拟机里ip为192.168.1.9 设置IP步骤请参考&#xff1a;Linux里如何设置IP(RED HAT) 二&#xff1a;将虚拟机网络连接方式设为桥接 假如&#xff0c;VirtualBox不…

Oracle创建用户、角色、授权、建表

oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可以让用户执行特定的命令集。例如&#xff0c;create table权限允许用户创建表&#xff0c;grant any privilege 权限允许用户授予任何系统权限。对象权限( database object privilege )…

linux服务器3306端口,linux系统对外开放3306、8080等端口,防火墙设置详解

linux系统对外开放3306、8080等端口&#xff0c;防火墙设置详解发布时间&#xff1a;2020-10-10 23:08:49来源&#xff1a;脚本之家阅读&#xff1a;141作者&#xff1a;julielele栏目&#xff1a;服务器我们很多时候在liunx系统上安装了web服务应用后(如tomcat、apache等)&…

hdu--1231--并查集连分量的个数

我觉得 这题 是纯粹的 并查集 可以算成 入门题吧 问你有几章桌子 就是问你有几个 连通块嘛 一个道理 touch me 这题 我采用了下 father[x]开始 初始化为-1 1 #include <iostream>2 #include <cstring>3 using namespace std;4 5 const int size 1010;6 int fathe…

linux查询服务器的dns,如何查看Linux系统中DNS服务器的运行状况

DNS是分布式数据库&#xff0c;可以让用户们方便访问互联网&#xff0c;而主机的dns服务器也直接影响了我们上网及访问网站的速度&#xff0c;那么你知道如何查看Linux系统中DNS服务器的运行状况吗&#xff1f;在Linux环境下&#xff0c;也提供了广泛流行的BIND服务器&#xff…

landscape 1

1. 创建出landscape的分层材质2. 把材质添加给landscape后&#xff0c;可以在landscape的画刷模式下看到3. 通过点击右侧的加号&#xff0c;依次添加layer后&#xff0c;就可以使用他们进行地形的绘制。 通过右键菜单可以快速填充和清除对应的layer4. 用下面的方法修改材质的法…

linux进程和线程教程,Linux下查看进程和线程

在Linux中查看线程数的三种方法1、top -H手册中说&#xff1a;-H : Threads toggle加上这个选项启动top&#xff0c;top一行显示一个线程。否则&#xff0c;它一行显示一个进程。2、ps xH手册中说&#xff1a;H Show threads as if they were processes这样可以查看所有存在的线…