题目链接:http://acm.swust.edu.cn/problem/842/

Time limit(ms): 1000        Memory limit(kb): 10000
 

Description

2012新的暑期集训开始了,一切都还相当不错,但是有一个问题成为了同学们的难题,那就是从实验室到食堂时,天气是非常的炎热,以至于大家都尽量避免从没有遮阴的地方走过,但是某些路径又不得不从没有遮阴的地方走过,所以现在难题出来了,给予你一些单向路段,让你找出从实验室到食堂,晒太阳最少的路径长度,以及该条路径的总长度。如果存在多条最少晒太阳的路径,则总长度要求最短。

输入n和m,表明是有n<=1000个转折点,m条路径,然后输入m(m<=100000)条路径,每一条路径包括4个数据,s,e,dis1 , dis2,分别表示该条路径的起点,

终点,路径总长度,以及没有遮阴路径的长度(dis1>=dis2);

结果保证小于2^31

Input

输出两个值,第一个值是没有遮阴路径的最小总长度,第二个是该条路径的总长度,如果没有遮阴路径的最小总长度相等,

Output

输出二者中总路径长度最小的那条路径的长度值。

Sample Input
    

3 4
1 2 10 2
1 2 11 1
2 3 5 2
2 3 7 1
4 4
1 2 10 2
2 4 10 3
1 3 5 3
3 4 16 2
Sample Output
2 18
5 20
 
解题思路:起点为1,终点为n,两个数组,一个存贮路径长度,一个是最少晒到阳光的长度,然后用Dijkstra算法就是~~~~
 
代码如下:
 #include <iostream>
#include <cstring>
const int maxn = ;
const int inf = 0x3f3f3f3f;
using namespace std; int diaA[maxn][maxn], disB[maxn][maxn], n, m, x, y, d1, d2; void init()
{
for (int i = ; i <= n; i++){
for (int j = i; j <= n; j++)
diaA[i][j] = diaA[j][i] = disB[i][j] = disB[j][i] = inf;
}
}
void Dijkstra(){
int dis[maxn], pay[maxn], vis[maxn], i, j, k;
memset(vis, , sizeof(vis));
for (i = ; i <= n; i++){
dis[i] = diaA[][i];
pay[i] = disB[][i];
}
vis[] = ;
for (i = ; i <= n; i++){
int min = inf;
for (j = ; j <= n; j++){
if (!vis[j] && pay[j] < min){
min = pay[j];
k = j;
}
}
vis[k] = ;
for (j = ; j <= n; j++){
if (!vis[j]){
if (pay[k] + disB[k][j]<pay[j] || pay[k] + disB[k][j] == pay[j] && dis[j]>dis[k] + diaA[k][j]){
pay[j] = pay[k] + disB[k][j];
dis[j] = dis[k] + diaA[k][j];
}
}
}
}
cout << pay[n] << ' ' << dis[n] << endl;
} int main(){
while (cin >> n >> m){
init();
for (int i = ; i < m; i++){
cin >> x >> y >> d1 >> d2;
if (d2 < disB[x][y] || d2 == disB[x][y] && d1 < diaA[x][y]){
diaA[x][y] = d1;
disB[x][y] = d2;
}
}
Dijkstra();
}
return ;
}

[Swust OJ 842]--实验室和食堂(最短路,Dijkstra算法)的更多相关文章

  1. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  2. 最短路Dijkstra算法的一些扩展问题

    最短路Dijkstra算法的一些扩展问题     很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...

  3. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  4. 单源最短路Dijkstra算法——matlab实现

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk ...

  5. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. 单源最短路(Dijkstra算法)

    #返回上一级 @Author: 张海拔 @Update: 2015-03-11 @Link: http://www.cnblogs.com/zhanghaiba/p/3514570.html Dijk ...

  7. 单源最短路——dijkstra算法

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问 ...

  8. 哈理工 oj 2122 旅行(map + 最短路dij算法)

    旅行 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 18(6 users) Total Accepted: 3(3 users) Ra ...

  9. hdu-2544-最短路(dijkstra算法模板)

    题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...

随机推荐

  1. createNewFile创建空文件夹与createTempFile创建临时文件夹

    创建要注意的地方如下: <pre name="code" class="java"> File类的createNewFile根据抽象路径创建一个新的 ...

  2. 利用fitnesse实现api接口自动化测试

    上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,仔细想想,我做接口测试也有几个年头了,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记得我最早接触接 ...

  3. shopnc b2b2c如何开启伪静态??

    shopnc b2b2c开启伪静态的方法 一. windows环境下 1.先下载isapi rewrite插件,安装,然后我们把根目录下面的htaccess.txt那么修改成.htaccess即可. ...

  4. psycopg2接口的基本用法

    转载自:http://zhiwei.li/text/2012/02/05/psycopg2接口的基本用法/ 与其他实现了DB API 2.0协议的其他数据库用户基本一致. import psycopg ...

  5. 编写带参数decorator

    无参的@log装饰器: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 发现对于被装 ...

  6. python 以面向对象的方式创建线程 实现售票系统

    ---恢复内容开始--- 转载或借鉴请注明转自http://www.cnblogs.com/FG123/p/5068556.html   谢谢! 通过面向对象的方法实现多线程,其核心是继承thread ...

  7. SumoLogic

    SumoLogic>>>Loggly. https://diyunpeng.loggly.com/setup MonitorWare http://www.monitorware.c ...

  8. RFID电子标签制造封装工艺和可靠性研究

    一.目的和意义 电子标签已经成为RFID工业的主要焦点 实现低成本.大批量.高可靠性地制造电子标签是推广RFID产品应用的关键技术之一 针对RFID标签制造中核心的封装工艺开展研究,以各向异性导 ...

  9. /export/App/zz/phantomjs-1.9.7-linux-x86_64/bin

    /export/App/zz/phantomjs-1.9.7-linux-x86_64/bin

  10. lua的前景??

    除了专业的游戏公司,貌似很少人在用lua来做开发啊,国内的lua社区越来越不行了. lua还在不断的发展,但每次新版本c接口都改动很大,项目想要升级有点困难啊. lua还有前途吗?