poj2502 最短路
//Accepted 504 KB 16 ms
//spfa最短路
//把n个地铁站作为n个顶点,边权为从一个站到另一个站的时间
//注意:地铁在相邻的两站之间是直线行驶,但其他的就不是了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <algorithm>
using namespace std;
/**
* This is a documentation comment block
* 如果有一天你坚持不下去了,就想想你为什么走到这儿!
* @authr songt
*/
;
const double inf = 1000000000000000000.0;
double x[imax_n];
double y[imax_n];
double a[imax_n][imax_n];
double dis[imax_n];
bool vis[imax_n];
int n;
double getDis(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
void init()
{
;i<=n;i++)
{
;j<=n;j++)
{
)
{
a[i][j]=getDis(x[i],y[i],x[j],y[j])*;
//printf("%d %d ==> %d %d\n",x[i],y[i],x[j],y[j]);
}
}
}
}
bool relax(int u,int v,double c)
{
)
{
dis[v]=dis[u]+c;
return true;
}
return false;
}
queue<int > q;
bool spfa(int src)
{
while (!q.empty()) q.pop();
;i<=n;i++)
dis[i]=inf;
dis[src]=;
memset(vis,,sizeof(vis));
q.push(src);
vis[src]=true;
while (!q.empty())
{
int pre=q.front();
q.pop();
vis[pre]=false;
;i<=n;i++)
if (relax(pre,i,a[pre][i]) && !vis[i])
{
vis[i]=true;
q.push(i);
}
}
}
int main()
{
scanf(],&y[],&x[],&y[]);
n=;
double ca,cb;
int start,end;
;
;i<imax_n;i++)
{
;j<imax_n;j++)
a[i][j]=0.0;
}
while (scanf("%lf%lf",&ca,&cb)!=EOF)
{
&& cb==-)
{
end=n;
for (int i=start;i<end;i++)
{
a[i][i+]=a[i+][i]=getDis(x[i],y[i],x[i+],y[i+])*;
//printf("%d %d ==> %d %d\n",x[i],y[i],x[j],y[j]);
}
flag=;
continue;
}
++n;
x[n]=ca;
y[n]=cb;
)
{
start=n;
flag=;
}
}
init();
spfa();
printf(]);
;
}
poj2502 最短路的更多相关文章
- poj2502最短路!
have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of getting to ride ...
- POJ-2502(Dijikstra应用+最短路)
Subway POJ-2502 这里除了直接相连的地铁站,其他图上所有的点都要连线,这里是走路的速度. 记住最后的结果需要四舍五入,否则出错. #include<iostream> #in ...
- POJ2502:Subway(最短路)
Subway Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14634 Accepted: 4718 题目链接:http ...
- POJ-2502 Subway( 最短路 )
题目链接:http://poj.org/problem?id=2502 Description You have just moved from a quiet Waterloo neighbourh ...
- bzoj1001--最大流转最短路
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...
- 【USACO 3.2】Sweet Butter(最短路)
题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...
- Sicily 1031: Campus (最短路)
这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...
- 最短路(Floyd)
关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...
- bzoj1266最短路+最小割
本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...
随机推荐
- Posix消息队列
转载于:http://blog.csdn.net/zx714311728/article/details/53197196 1.消息队列 消息队列可以认为是一个消息链表,消息队列是随内核持续的.队列中 ...
- Unity-The Courtyard demo学习
1.编辑器相机同步 The Courtyard的demo中,会发现Scene视图和Game视图是编辑器下同步的,它通过一个CopySceneView.cs脚本实现 Scene视图和Game视图的显示效 ...
- noi 4982 踩方格
题目链接:http://noi.openjudge.cn/ch0206/4982/ 深搜很好写. DP:O(n) d[i] 为走 I 不的方案数, l[i],r[i],u[i]为第一步走 左,右,上, ...
- Android中插件开发篇之----类加载器
关于插件,已经在各大平台上出现过很多,eclipse插件.chrome插件.3dmax插件,所有这些插件大概都为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主 ...
- CSS 盒子模型概述
一.简介 CSS 盒子模型(元素框)由元素内容(content).内边距(padding).边框(border).外边距(margin)组成. 盒子模型,最里面的部分是实际内容:直接包围内 ...
- 将B表的字段内容插入到A表字段中
update hy_b_hacker as h , ( SELECT ( @rowNO := @rowNo +1 ) AS rowno, ip FROM ( SELECT * FROM hy_b_se ...
- Linux命令帮助中尖括号<>和方括号[]以及省略号...的含义
在方括号内的表达式("[" 和 "]"之间的字符)是可选的(写命令时要去掉括号). 在尖括号内的表达式("[" 和 "]" ...
- 安装numpy+mkl
引子: 运行from sklearn.dataset import load_iris 时提示: Traceback (most recent call last): File "F:/gi ...
- http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
集体智慧勘误表: http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321 ------------------- ...
- ~是什么意思 在C语言中,~0代表什么
是c语言中的位运算符:取反.0在内存中的存储方式是所有位为0,0000000000000000那么按位取反后位16个1(如果整形在你的机器上站16位),那么表示的数为-1.