title: hdu-3790最短路刷题

date: 2018-10-20 14:50:31

tags:

  • acm
  • 刷题

    categories:
  • ACM-最短路

概述

一道最短路的水题,,,尽量不看以前的代码打出来,,,熟悉一下dijkstra的格式和链式前向星的写法,,,,

虽然是水题,,,但是一开始没考虑取费用最短的wa了一发,,,,QAQ

分析

链式前向星存图,,再加一个数组保存源点到每个点的费用cst[maxm],,,注意取最少的费用

代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <queue> using namespace std; const int maxn = 1e3 + 10;
const int maxm = 1e5 + 10;
const int inf = 0x3f3f3f3f; int head[maxm << 1];
bool vis[maxn];
int dis[maxm];
int cst[maxm];
int cnt;
int n , m; struct edge
{
int to;
int w;
int c;
int last;
}edge[maxm << 1]; void addedge(int u , int v , int w , int c)
{
edge[cnt].to = v;
edge[cnt].w = w;
edge[cnt].c = c;
edge[cnt].last = head[u];
head[u] = cnt++;
}
struct node
{
int u;
int w;
node(int _u , int _w):u(_u) , w(_w){} bool operator < (const node &res) const
{
return w > res.w;
}
}; void dijkstra(int n , int s)
{
for(int i = 1; i <= n; ++i)
dis[i] = (i == s) ? 0 : inf;
memset(cst , inf , sizeof cst);cst[s] = 0;
memset(vis , false , sizeof vis); priority_queue<node> q; while(!q.empty()) q.pop(); q.push(node(s , 0)); while(!q.empty())
{
node x = q.top();q.pop();
int u = x.u; if(vis[u]) continue;
vis[u] = true; for(int i = head[u] ; ~i; i = edge[i].last)
{
int to = edge[i].to;
int w = edge[i].w;
int c = edge[i].c;
if(!vis[to] && dis[u] + w <= dis[to])
{
dis[to] = dis[u] + w;
//if(cst[u] + c < cst[to])
cst[to] = cst[u] + c;
q.push(node(to , dis[to]));
}
}
}
}
int main()
{
while(scanf("%d%d" , &n , &m) && n && m)
{
cnt = 0;
memset(head , -1 , sizeof head);
int u , v , w , c;
for(int i = 1; i <= m; ++i)
{
scanf("%d%d%d%d" , &u , &v , &w , &c);
addedge(u , v , w , c);
addedge(v , u , w , c);
}
int s , t;
scanf("%d%d" , &s , &t); dijkstra(n , s); printf("%d %d\n" , dis[t] , cst[t]); }
} //最短路相等时注意取费用最短的
//
//5 7
//1 2 5 5
//2 3 4 5
//1 3 4 6
//3 4 2 2
//3 5 4 7
//4 5 2 4
//1 3 4 4
//1 5
//8 10

差不多记住了的dijkatra的代码,,,继续继续

(end)

hdu-3790最短路刷题的更多相关文章

  1. HDU 2544 最短路(模板题)

    求1到N的最短路径,模板题,以1为源点,用dijkstra算法(可以用优先级队列优化) #include <iostream> #include <algorithm> #in ...

  2. hdu 2066 最短路水题

    题意:给出多个可选择的起始点和终点,求最短路 思路:执行起始点次的spfa即可 代码: #include<iostream> #include<cstdio> #include ...

  3. HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)

    前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...

  4. 手把手教你用C++ 写ACM自动刷题神器(冲入HDU首页)

    转载注明原地址:http://blog.csdn.net/nk_test/article/details/49497017 少年,作为苦练ACM,通宵刷题的你 是不是想着有一天能够荣登各大OJ榜首,俯 ...

  5. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. 教你用python写:HDU刷题神器

    声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定 ...

  7. HDU 5521.Meeting 最短路模板题

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  8. HDU 2544 最短路(模板题——Floyd算法)

    题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...

  9. 【刷题】HDU 2222 Keywords Search

    Problem Description In the modern time, Search engine came into the life of everybody like Google, B ...

随机推荐

  1. 网站监控系统安装部署(zabbix,nagios)

    zabbix分布式监控系统安装部署 官方网站链接 https://www.zabbix.com/documentation/2.0/manual/installation 安装环境说明 参考地址 ht ...

  2. Linux块设备和字符设备

    块设备:系统能够随机无序访问固定大小的数据片的设备,这些数据片称为块.块设备是以固定大小长度来传送资料的,它使用缓冲区暂存数据,时机成熟后从缓存中一次性写入到设备或者从设备中一次性放到缓存区.常见的块 ...

  3. Java后台获取前端utf-8格式&nbsp;空格,使用trim()消除不了的解决办法

    byte bytes[] = {(byte) 0xC2,(byte) 0xA0}; String UTFSpace = new String(bytes,"utf-8"); htm ...

  4. Tju_Oj_2790Fireworks Show

    这个题主要在于时间复杂度的计算,N是10的6次方,C是10的2次方,OJ系统可接受的时间是10的7次方(室友说是无数先人测出来了┭┮﹏┭┮),所以如果普通遍历的话肯定会超时.而代码中是跳着走了,相当于 ...

  5. classList属性

    1.传统方法: 在操作类名的时候,需要通过className属性添加.删除和替换类名.如下面例子: ? 1 <div class="bd user disabled"> ...

  6. 通过PDB文件实现非嵌入式的c++反射

    上一篇blog我阐述了一种实现非嵌入式的反射的基本思路.相比于通过宏和模板实现,这种非嵌入的反射的优点是不需要写额外的代码来记录meta信息. 首先,为了在c++中实现反射系统,我认为需要解决以下两个 ...

  7. ArcGIS RunTime Sdk +WPF 基础地图显示

    1 简单的地图展示 ArcGISRunTime 的平面地图展示主要依赖MapView这个控件,MapView是地图的容器,Map主要是图层的集合 (注:三维场景的显示主要依赖SceneView这个控件 ...

  8. js对金额浮点数运算精度的处理方案

    浮点数产生的原因 浮点数转二进制,会出现无限循环数,计算机又对无限循环小数进行舍入处理 js弱语言的解决方案 方法一: 指定要保留的小数位数(0.1+0.2).toFixed(1) = 0.3;这个方 ...

  9. [HBase] 服务端RPC机制及代码梳理

    基于版本:CDH5.4.2 上述版本较老,但是目前生产上是使用这个版本,所以以此为例. 1. 概要 说明: 客户端API发送的请求将会被RPCServer的Listener线程监听到. Listene ...

  10. activiti源码分析学习

    activiti源码分析学习导语 目前项目中用activiti来做工作流的相关工作,最近遇到一些情况下,公司二次开发的流程图渲染出现了问题,会造成流程图出不来的情况.初步分析数据库中记录以及简单的代码 ...