http://poj.org/problem?id=1556

题目大意:从(0,5)走到(10,5)走的最短距离是多少

中间有最多18个隔着的墙  每个墙都有两个门  你只能从门通过

我的思路是  只要这两个点把能过的   就把他们的距离算出来  最后用迪杰斯塔拉算法求最短路就行了

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>
#include<algorithm>
#include<iostream> using namespace std;
#define N 200
const double ESP = 1e-;
#define INF 0xffffffff
int vis[N];
double dis[N];
struct node
{
double x,y;
int c;
node(double x=,double y=,int c=):x(x),y(y),c(c){}
}p[N];
node a[N][]; double G[N][N]; double dij(int s,int e)
{
memset(vis,,sizeof(vis));
for(int i=;i<e;i++)
{
dis[i]=G[s][i];
}
for(int i=;i<e;i++)
{
double Min=INF;
int dist;
for(int j=;j<e;j++)
{
if(!vis[j] && Min>dis[j])
{
Min=dis[j];
dist=j;
}
}
vis[dist]=;
for(int j=;j<e;j++)
{
if(!vis[j])
dis[j]=min(dis[j],dis[dist]+G[dist][j]);
}
}
return dis[e-];
} int main()
{
int n;
double k[N];
while(scanf("%d",&n),n!=-)
{
p[]=node(,,);
int b=;
for(int i=;i<=n;i++)
{
scanf("%lf",&k[i]);
scanf("%lf %lf %lf %lf",&a[i][].x,&a[i][].y,&a[i][].x,&a[i][].y);
p[b++]=node(k[i],a[i][].x,i);
p[b++]=node(k[i],a[i][].y,i);
p[b++]=node(k[i],a[i][].x,i);
p[b++]=node(k[i],a[i][].y,i);
}
p[b++]=node(,,n+);
for(int i=;i<b;i++)
{
for(int j=;j<b;j++)
{
G[i][j]=INF;
}
dis[i]=INF;
}
for(int i=;i<b;i++)
{
for(int j=i+;j<b;j++)
{
if(p[i].c == p[j].c)
continue;
int flag=;
for(int l=p[j].c-; l>p[i].c; l--)
{
double y=(k[l]-p[i].x)*(p[j].y-p[i].y)/(p[j].x-p[i].x)+p[i].y;
if(a[l][].x-y>ESP || (a[l][].y-y<ESP && a[l][].x-y>ESP) || (a[l][].y-y<ESP))
{
flag=;
break;
}
}
if(flag==)
{
G[i][j]=sqrt((p[j].x-p[i].x)*(p[j].x-p[i].x)+(p[j].y-p[i].y)*(p[j].y-p[i].y));
}
}
}
double aa=dij(,b);
printf("%.2f\n",aa);
}
return ;
}

最新文章

  1. [python]CentOS 6下安装Python2.7
  2. 动态链接库(DLL)总结
  3. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q88-Q90)
  4. HRBUST 1326 循环找父节点神术
  5. c#代码画图
  6. createdb test时报global/pg_filenode.map不存在
  7. File not found images\Thumbs.db.
  8. 给MyEclipse 10增加SVN功能
  9. ClientScriptManager与ScriptManager向客户端注册脚本的区别
  10. DataGrid( 数据表格) 组件[4]
  11. oracle超过最大游标数异常分析(转贴)
  12. 使用Sublime Text 或 vs2017开发Node.js程序
  13. IIS中虚拟目录不继承主站点web.config设置的办法(转载)
  14. keras常见参数input_dim、input_length理解
  15. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0
  16. 增加显示记录数的label及隐藏refresh按钮
  17. Vue笔记:VS Code 常用快捷键
  18. Shell操作mysql数据库
  19. 针对后台TCP服务F5健康检查配置
  20. Z律师:创业项目如何玩转股权众筹?

热门文章

  1. 使用laravel的Command实现搜索引擎索引和模板的建立
  2. 使用windows的fsutil命令创建指定大小及类型的测试文件
  3. CAD交互绘制圆(网页版)
  4. docker运行时设置redis密码并替换redis默认的dump.rdb
  5. TWaver可视化编辑器的前世今生(二)3D编辑器
  6. 【讲●解】KMP算法
  7. IDEA ctrl+alt+L 格式化快捷键无效时解决
  8. openjdk-alpine镜像无法打印线程堆栈和内存堆栈问题
  9. 6. COLUMN_PRIVILEGES
  10. 【开发工具安装配置】MyEclipse,Tomcat,Mysql安装配置