Subway

Time Limit: 1000MS Memory Limit: 65536K

Description

You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of getting to ride your bike to school every day, you now get to walk and take the subway. Because you don't want to be late for class, you want to know how long it will take you to get to school.

You walk at a speed of 10 km/h. The subway travels at 40 km/h. Assume that you are lucky, and whenever you arrive at a subway station, a train is there that you can board immediately. You may get on and off the subway any number of times, and you may switch between different subway lines if you wish. All subway lines go in both directions.

Input

Input consists of the x,y coordinates of your home and your school, followed by specifications of several subway lines. Each subway line consists of the non-negative integer x,y coordinates of each stop on the line, in order. You may assume the subway runs in a straight line between adjacent stops, and the coordinates represent an integral number of metres. Each line has at least two stops. The end of each subway line is followed by the dummy coordinate pair -1,-1. In total there are at most 200 subway stops in the city.

Output

Output is the number of minutes it will take you to get to school, rounded to the nearest minute, taking the fastest route.

Sample Input

0 0 10000 1000

0 200 5000 200 7000 200 -1 -1

2000 600 5000 600 10000 600 -1 -1

Sample Output

21

Source

Waterloo local 2001.09.22

题意:输入家的位置,学校的位置,然后知道几条地铁的站点,然后求到学校的时间最短时间。

题解:这道题有点懵逼,首先是输入,没有告知地铁的条数,知道告诉每条地铁到(-1,,1)结束。也就是说地铁输入到EOF才会结束。难点就在如何输入上,剩下的就是模板了。注意他的时速单位是KM,但是坐标单位是M。注意:地铁站点只能一个站点到下一个站点。(从1站到3三站,你必须经过2站才能到3站)

附上代码

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <map> using namespace std;
const int maxn = 205;
const int INF = 1e9+7;
const double h = 40*1000.0/60.0;
const double r = 10*1000.0/60.0; struct node
{
double x,y;
}p[maxn]; double s[maxn][maxn];
int num; int judge(double x,double y)
{
int i;
for(i=0;i<num;i++)
if(p[i].x==x&&p[i].y==y)
return i;
if(i==num)
{
p[num].x = x;
p[num++].y = y;
}
return i;
} double get_dis(node a,node b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
} void dijkstra()
{
double dis[maxn],MIN;
int i,j,f[maxn],k;
for(i=0;i<num;i++)
{
f[i] = 0;
dis[i] = s[0][i];
}
f[0] = 1;
for(i=0;i<num;i++)
{
MIN = INF;
k = -1;
for(j=0;j<num;j++)
{
if(!f[j]&&dis[j]<MIN)
{
MIN = dis[j];
k = j;
}
}
if(MIN == INF)
break;
f[k] = 1;
for(j=0;j<num;j++)
if(!f[j]&&dis[k]+s[k][j]<dis[j])
dis[j] = dis[k] + s[k][j];
}
printf("%.0f\n",dis[1]);
} int main()
{
int i,j,a,b;
int link[maxn],n;
double dis;
for(i=0;i<maxn;i++)
for(j=0;j<maxn;j++)
s[i][j] = (i==j)?0:INF;
node q;
scanf("%lf%lf",&p[0].x,&p[0].y);
scanf("%lf%lf",&p[1].x,&p[1].y);
num = 2;
//int k = 0;
while(scanf("%lf%lf",&q.x,&q.y)!=EOF)
{
n = 0;
link[n++] = judge(q.x,q.y);
while(scanf("%lf%lf",&q.x,&q.y))
{
if(q.x==-1&&q.y==-1)
break;
link[n++] = judge(q.x,q.y);
}
for(i=0;i<n-1;i++)
{
a = link[i];
b = link[i+1];
dis = get_dis(p[a],p[b]);
s[a][b] = s[b][a] = min(s[a][b],dis/h);
}
// for(i=0;i<n;i++)
// {
// a = link[i];
// cout<<a<<":";
// printf("%.0f %.0f\n",p[a].x,p[a].y);
// }
// k++;
// if(k==2)
// break;
}
for(i=0;i<num;i++)
for(j=0;j<i;j++)
{
dis = get_dis(p[i],p[j]);
s[i][j] = s[j][i] = min(s[i][j],dis/r);
}
// for(i=0;i<num;i++)
// {
// for(j=0;j<num;j++)
// printf("%.0f ",s[i][j]);
// printf("\n");
// }
dijkstra();
return 0;
}

POJ-2502_Subway的更多相关文章

  1. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  2. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  3. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

  4. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...

  5. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

  6. POJ 2739. Sum of Consecutive Prime Numbers

    Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20050 ...

  7. POJ 2255. Tree Recovery

    Tree Recovery Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11939   Accepted: 7493 De ...

  8. POJ 2752 Seek the Name, Seek the Fame [kmp]

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17898   Ac ...

  9. poj 2352 Stars 数星星 详解

    题目: poj 2352 Stars 数星星 题意:已知n个星星的坐标.每个星星都有一个等级,数值等于坐标系内纵坐标和横坐标皆不大于它的星星的个数.星星的坐标按照纵坐标从小到大的顺序给出,纵坐标相同时 ...

  10. poj 1251 Jungle Roads (最小生成树)

    poj   1251  Jungle Roads  (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...

随机推荐

  1. JavaScript--Map,ForEach遍历的比较

    /* forEach只会遍历,不会进行赋值 */ var sum = 0 ; dataArr.forEach(function (value,index,dataArr) { sum +=value. ...

  2. 前端(jQuery)(9)-- jQuery菜单

    1.垂直菜单布局 2.垂直菜单实现 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. POSTMAN调试接口post对象

    APP回传设备信息,设备信息对象里边包含以下字段 后台是java ssh接收 用对象属性自动封装比较方便 所以,使用 方式进行回传 而不是使用网上说的 设置如下图

  4. docker-4-Dockerfile配置文件详解

    ​ Dockerfile简单一点就是描述你这个镜像安装了哪些软件包,有哪些操作,创建了什么东西.有些人喜欢用 docker commit 命令去打包镜像,这样是不好的,首先commit出来的镜像比你使 ...

  5. Django 的学习(1) 从建立到数据库操作

    基本是翻译官方教程 django-admin startproject mysite 创建工程的命令 来看一下django的结构图 manage.py 和工程交互的多种方式 inner mysilte ...

  6. jsp页面_按回车键触发事件

    一般在列表页面中,都会带有查询按钮,当输入完查询条件后,如果需要通过鼠标点击"查询"按钮才发起查询,那么就感觉不够方便,那么我们就可以修改为按下回车键的时候发起查询. <sc ...

  7. PyCharm如何删除工程项目

    1.在菜单中选择:file——>close project 2.选择需要删除的项目右上角的“×”号进行删除工程项目 3.找到工程项目的存放路径,删除对应的工程项目文件 通过上诉操作即可在pych ...

  8. 为Array对象添加一个去除重复项的方法

    输入例子 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq() 输出例子 [false, true, unde ...

  9. 时间模块(import time)

    时间戳时间: float数据类型,给机器用的 print(time.time()) =>1533713657.5423343 结构化时间: 上下两种格式的中间状态 能够通过属性名来获取对象中的值 ...

  10. 移动端的vh 和 vw简介和使用场景

    vw 相对于视窗的宽度:视窗宽度是100vw:vh则类似,是相对于视窗的高度,视窗高度是100vh. 这里的视窗指的又是啥? 是浏览器内部宽度大小(window.innerWidth)? 是整个浏览器 ...