POJ    subway    600K  0MS
题意:乘坐地铁从家到学校,地铁40km/h 步行10km/h , 已知各个站点的x,y坐标,输入的信息每个列次用-,-1隔开,要求花费的时间最少
解决方案:把家和学校各看成一个站点,求出相邻站点的权值(路程/速度),以站点数量建立map,保留两站之间的距离,然后dijsktra算法寻找两站点间最短路径
问题:结束条件EOF,sign初始值
#include<iostream>
#include<cmath>
#define MAX 10000000.0
using namespace std;
double pt[][];// 存放站点的坐标值
double map[][];// 存放各个站点直接的权值(路程/速度)
double d[]; //记录各点到起点最短距离
double dijkstra(int x, int y,int n)// pt[x]为起点 ,pt[y]为终点 一共n个站点
{
int i,j,k,tx=x,next;//next下一个最短路径位置
double min ;
bool visited[];
memset(visited,false,sizeof(visited));
visited[x]=true;
for (i=;i<n;i++)
if(!visited[i])d[i]=map[][i];
for(i=; i<n; i++)
{
min = MAX;
for (j=; j<n; j++)//找到附近最小的路径
if(!visited[j] && d[j]<min)
min=d[j], next=j;
visited[next]= true;//访问
if(next==y) break; //找到终点的最短距离,结束
for (j=; j<n; j++)//更新各点到源点最短路信息
if(!visited[j] && d[j]>d[next]+map[next][j])
d[j]=d[next]+map[next][j];
}
return d[y];
}
int main()
{
char c;
int i,j,k,num,sign;//num记录站点个数, sign标记站点关联
cin >> pt[][] >> pt[][] >> pt[][] >> pt[][];//pt[0],pt[1] 记录起点、终点 memset(map,,sizeof(map));
num = ,sign = ;//sign=0 隔离站点关联
while( scanf("%lf%lf",&pt[num][],&pt[num][])!=EOF)
{
// c=getchar();if(c=='#') break;
if(pt[num][]==- && pt[num][]==-)
{
sign = ; continue;
}
if(sign)//求出相邻地铁站点间的权值
map[num][num-]=map[num-][num]=
(sqrt(pow(pt[num][]-pt[num-][],2.0)+pow(pt[num][]-pt[num-][],2.0)))/40000.0;
++num, sign =;
}
//求出剩余各个站点间的权值
for(i=; i<num; i++)
for (j=; j<num; j++)
if(map[i][j]==) map[i][j]=map[j][i]=(sqrt((pt[i][]-pt[j][])*(pt[i][]-pt[j][])+(pt[i][]-pt[j][])*(pt[i][]-pt[j][])))/10000.0;
printf("%0.lf\n",dijkstra(,,num)*);//四舍五入输出结果
return ;
}

这是第一次做图论题,复习了一下Dijsktra算法,关键是建立map模型。。。

POJ 2502 Dijsktra的更多相关文章

  1. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  2. POJ 2502 Subway / NBUT 1440 Subway / SCU 2186 Subway(图论,最短距离)

    POJ 2502 Subway / NBUT 1440 Subway / SCU 2186 Subway(图论,最短距离) Description You have just moved from a ...

  3. Subway POJ 2502

    题目链接: http://poj.org/problem?id=2502 题目大意: 你刚从一个安静的小镇搬到一个吵闹的大城市,所以你不能再骑自行车去上学了,只能乘坐地铁或者步行去上学.因为你不想迟到 ...

  4. POJ 2502 Subway(迪杰斯特拉)

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6692   Accepted: 2177 Descriptio ...

  5. POJ 2502 Subway (Dijkstra 最短+建设规划)

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6689   Accepted: 2176 Descriptio ...

  6. POJ 2502 最短路

    http://poj.org/problem?id=2502 同一条地铁线上的站点相邻点间按照v2建边,然后所有点之间按照v1更新建边,所有的边都是双向边,both directions. 然后直接跑 ...

  7. kuangbin_ShortPath L (POJ 2502)

    dij部分还是跟模板差不多的 但是这题的难点是处理输入 或者说理解题意 事实上每个点之间都是可以走的......WA了好几发就因为没意识到同一条路线上的各个站点之间居然也可以走得比车子快.... PS ...

  8. POJ 2502 Subway

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4928   Accepted: 1602 Descriptio ...

  9. Dijkstra+计算几何 POJ 2502 Subway

    题目传送门 题意:列车上行驶40, 其余走路速度10.问从家到学校的最短时间 分析:关键是建图:相邻站点的速度是40,否则都可以走路10的速度.读入数据也很变态. #include <cstdi ...

随机推荐

  1. java中的JSON对象的使用

    申明:没工作之前都没听过JSON,可能是自己太菜了.可能在前台AJAX接触到JSON,这几天要求在纯java的编程中,返回JSON字符串形式. 网上有两种解析JSON对象的jar包:JSON-lib. ...

  2. LinkedHashMap和HashMap的比较使用(转载)

    LinkedHashMap和HashMap的比较使用 ? import java.util.HashMap; import java.util.Iterator; import java.util.L ...

  3. STM32之系统滴答定时器

    一.SysTick(系统滴答定时器)概述 操作系统需要一个滴答定时器周期性产生中断,以产生系统运行的节拍.在中断服务程序里,基于优先级调度的操作系统会根据进程优先级切换任务,基于时间片轮转系统会根据时 ...

  4. 炼狱—Bug集中营

    关联性 Bug1:在web.config配置了一个配置项,但是却没有在app.config(测试工程)中进行配置: CresteOrder的加密参数为了符合QQ要求增加了一个sessionKey,但是 ...

  5. Nopcommerce 3.7 增加了Redis 作为缓存啦

    Nopcommerce 3.7  版增加了Redis 缓存,相比之前内存缓存, 感觉使用了Redis 作为缓存,明显加快了Web页面响应速度! 废话少说 拉代码: 1 git clone https: ...

  6. js获取域名的方法

    本文实例讲述了js获取域名的方法.分享给大家供大家参考.具体实现方法如下: 复制代码代码如下: <script>//获取域名var k_host = window.location.hos ...

  7. What is machine learning?

    What is machine learning? One area of technology that is helping improve the services that we use on ...

  8. Stanford CoreNLP--Split Sentence

    分句功能参考 Stanford Tokenizer. 在edu.stanford.nlp.pipeline包中实现了一系列分词分句功能,其中SentenceAnnotator类实现了对文件分句功能. ...

  9. Z-Stack 软件架构分析

    转自Z-Stack 软件架构分析 Z-Stack的main函数在Zmain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即有启动代码来初始化硬件系统和软件架构需要的各个模块,另一个作用就是 ...

  10. Android Studio的一些技巧和使用注意事项(持续更新)

    1.创建一个项目之后默认是没有assets目录的,可以手动在main目录下创建一个assets目录. 2.