博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4179(有限制的最短路)
阅读量:5770 次
发布时间:2019-06-18

本文共 1400 字,大约阅读时间需要 4 分钟。

题目链接:

思路:不知道怎么回事,wa了n多次,然后不知道怎么回事就过了==,还是简单的说一下思路吧:一次以起点为源点跑一遍spfa,然后以终点为起点跑一次spfa,这样我们就可以枚举difficult为maxdist的边了,设该边的端点为x,y,于是有ans=min(ans,dist1[x]+Get_Dist(x,y)+dist2[y])。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 typedef pair
Pair; 10 #define MAXN 44444 11 #define inf 1e16 12 double dist1[MAXN],dist2[MAXN]; 13 bool mark[MAXN]; 14 struct Edge{ 15 int v; 16 double w; 17 Edge(){} 18 Edge(int _v,double _w){ 19 v=_v,w=_w; 20 } 21 }; 22 vector
map1[MAXN],map2[MAXN]; 23 vector
vet; 24 struct Point{ 25 int x,y,z; 26 }point[MAXN]; 27 28 struct Node{ 29 int vs,vt; 30 }node[MAXN]; 31 int n,m,st,ed,maxdist; 32 33 double Get_Dist(int vs,int vt){ 34 double xx=1.0*(point[vs].x-point[vt].x)*(point[vs].x-point[vt].x); 35 double yy=1.0*(point[vs].y-point[vt].y)*(point[vs].y-point[vt].y); 36 double zz=1.0*(point[vs].z-point[vt].z)*(point[vs].z-point[vt].z); 37 return sqrt(xx+yy+zz); 38 } 39 40 int Get(int vs,int vt){ 41 if(point[vs].z
map[],double dist[]) 51 { 52 memset(mark,false,(n+2)*sizeof(mark[0])); 53 for(int i=1;i<=n;i++)dist[i]=inf; 54 dist[st]=0;mark[st]=true; 55 queue
Q; 56 Q.push(st); 57 while(!Q.empty()){ 58 int u=Q.front(); 59 Q.pop(); 60 mark[u]=false; 61 for(int i=0;i
View Code

 

 

转载地址:http://bziux.baihongyu.com/

你可能感兴趣的文章
强化学习的未来— 第一部分
查看>>
TableStore:用户画像数据的存储和查询利器
查看>>
2019 DockerCon 大会即将召开,快来制定您的专属议程吧!
查看>>
15分钟构建超低成本数据大屏:DataV + DLA
查看>>
jSearch(聚搜) 1.0.0 终于来了
查看>>
盘点2018云计算市场,变化大于需求?
查看>>
极光推送(一)集成
查看>>
MySQL 8.0 压缩包版安装方法
查看>>
@Transient注解输出空间位置属性
查看>>
Ansible-playbook 条件判断when、pause(学习笔记二十三)
查看>>
5种你未必知道的JavaScript和CSS交互的方法(转发)
查看>>
线程进程间通信机制
查看>>
galera mysql 多主复制启动顺序及命令
查看>>
JS prototype 属性
查看>>
中位数性质——数列各个数到中位数的距离和最小
查看>>
WebApp之Meta标签
查看>>
添加Java文档注释
查看>>
Python3批量爬取网页图片
查看>>
iphone-common-codes-ccteam源代码 CCEncoding.m
查看>>
微信公众平台开发(96) 多个功能整合
查看>>