[kuangbin带你飞]专题四 最短路练习 L POJ 2502
来源:互联网 发布:方便面 减肥 知乎 编辑:程序博客网 时间:2024/04/29 16:25
题目地址:https://vjudge.net/contest/66569#problem/L
思路:基本的最短路,输入有点麻烦,每次碰到-1,-1,说明是另一条新线,以EOF结尾。然后跑一次dij即可。
AC代码:
#include<iostream>#include<cstdio>#include<queue>#include<vector>#include<cstring>#include<cmath>#include<map>#define INF 0x3f3f3f3fusing namespace std;struct pos{ int x,y;}S[205];double E[205][205];double d[205];int main(){ int x,y; for(int i=0;i<205;i++) { d[i]=INF; for(int j=0;j<205;j++) E[i][j]=INF; } scanf("%d%d",&x,&y); S[1].x=x,S[1].y=y; scanf("%d%d",&x,&y); S[2].x=x,S[2].y=y; int k=3; int first=1; int pre; while(~scanf("%d%d",&x,&y)) { if(x==-1&&y==-1) { first=1; continue; } int now=-1; for(int i=1;i<k;i++) { if(S[i].x==x && S[i].y==y) { now=i; break; } } if(now==-1) { now=k; S[k].x=x,S[k].y=y; k++; } if(first) { first=0; } else { double dis=sqrt((x-S[pre].x)*(x-S[pre].x)+(y-S[pre].y)*(y-S[pre].y)); dis=dis/40000; //printf("%f\n",dis); E[pre][now]=E[now][pre]=dis; } pre=now; } for(int i=1;i<k;i++) for(int j=1;j<k;j++) { if(i==j) continue; double temp=sqrt((S[i].x-S[j].x)*(S[i].x-S[j].x)+(S[i].y-S[j].y)*(S[i].y-S[j].y)); //printf("%f\n",temp); temp=temp/10000; if(E[i][j]>temp) { E[i][j]=E[j][i]=temp; } } priority_queue<pair<double,int> >q; d[1]=0; q.push(make_pair(-d[1],1)); while(!q.empty()) { int now=q.top().second; q.pop(); for(int i=1;i<k;i++) { if(i==now) continue; if(d[i]>d[now]+E[now][i]) { d[i]=d[now]+E[now][i]; q.push(make_pair(-d[i],i)); } } } printf("%.0f\n",d[2]*60);}
0 0
- [kuangbin带你飞]专题四 最短路练习 L POJ 2502
- [kuangbin带你飞]专题四 最短路练习 K(差分约束)L
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习 A
- [kuangbin带你飞]专题四 最短路练习 B
- [kuangbin带你飞]专题四 最短路练习 C
- [kuangbin带你飞]专题四 最短路练习D
- [kuangbin带你飞]专题四 最短路练习-E
- [kuangbin带你飞]专题四 最短路练习 -F
- [kuangbin带你飞]专题四 最短路练习-G
- [kuangbin带你飞]专题四 最短路练习 MN
- [kuangbin带你飞]专题四 最短路练习 P
- [kuangbin带你飞]专题四 最短路练习 R
- [kuangbin带你飞]专题四 最短路练习 A
- [kuangbin带你飞]专题四 最短路练习 B
- [kuangbin带你飞]专题四 最短路练习 A POJ 2387
- [kuangbin带你飞]专题四 最短路练习 B POJ 2253
- Python——方法重写与构造方法
- 一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP 字数2382 阅读28677 评论48 喜欢149 什么是持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工
- 图片缩略图及水印
- windows开机自启动软件查询,添加,修改,删除
- linux文件学习7
- [kuangbin带你飞]专题四 最短路练习 L POJ 2502
- 开源图表库MPAndroidChart(曲线图、直方图、饼状图)
- Windows与Linux下MySQL的null处理区别
- java 编码
- 使用ffmpeg视频格式转换、视频截图、视频采集、屏幕录制
- JavaScript作用域基础原理
- 解决ie兼容颜色rgba格式
- 批处理常用命令总结 - 批处理命令简介
- LeetCode 52. N-Queens II 解题报告