洛谷P2914:https://www.luogu.org/problemnew/show/P2914



这题目在暑假培训的时候考到

当时用Floyed会T掉

看楼下都是用Dijkstra

难道没有人用优雅的SPFA吗?

思路

用前向星构建整个图

注意每一条边都不能超过len(也就是题目中的m)

所以存图的时候注意一下这一点就行了

其他就跟SPFA一样套板子

代码中还有详细注解

注意坑点:数组开大一点 没开大的我RE了2次

代码

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,m,cnt;
double len;
int exist[500005];//判断是否在队中
int team[2000020];//队列
int head[500005];
double dis[500005];//从1到n的距离
int t=0,w=1;
struct ele
{
double x;
double y;
}ele[100005];//电线杆的坐标
struct edge
{
int next;
int to;
double w;
}e[5000005];
void add(int u,int v,double w)
{
e[++cnt].w=w;
e[cnt].to=v;
e[cnt].next=head[u];
head[u]=cnt;
}//前向星图
double dist(int i,int j)
{
double x1=ele[i].x;
double y1=ele[i].y;
double x2=ele[j].x;
double y2=ele[j].y;
double d=hypot(x1-x2,y1-y2);//判断电线杆之间的距离
//据楼下的dalao说用sqrt会爆就没用
//用了求直角三角形斜边长的函数<cmath>
return d;
}
int main()
{
cin>>n>>m>>len;
for(int i=1;i<=n;i++)
cin>>ele[i].x>>ele[i].y;
for(int i=1;i<=n;i++)
dis[i]=99999999;//初始化
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
if(dist(i,j)<=len)//如果没有超过len就可以加入边
{
add(i,j,dist(i,j));
add(j,i,dist(i,j));
}
}
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
add(x,y,0);
add(y,x,0);//如果已经有电线就不用再花费距离
}
dis[1]=0;//常规SPFA开始
team[1]=1;
while(t<w)
{
t++;
int u=team[t];
exist[u]=0;
for(int i=head[u];i;i=e[i].next)
{
int v=e[i].to;
if(dis[v]>dis[u]+e[i].w)
{
dis[v]=dis[u]+e[i].w;
if(!exist[v])
{
w++;
exist[v]=1;
team[w]=v;
}
}
}
}
if(dis[n]==99999999)//如果到不了
cout<<"-1";
else
cout<<int(dis[n]*1000);//强制转换int类型
}

【题解】洛谷P2914[USACO08OCT]断电Power Failure的更多相关文章

  1. 题解——洛谷P1550 [USACO08OCT]打井Watering Hole(最小生成树,建图)

    题面 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to his N (1 <= N <= 300) pas ...

  2. 题解 洛谷P5018【对称二叉树】(noip2018T4)

    \(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...

  3. 题解 洛谷 P3396 【哈希冲突】(根号分治)

    根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...

  4. 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)

    题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...

  5. 题解-洛谷P4229 某位歌姬的故事

    题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...

  6. 题解-洛谷P4724 【模板】三维凸包

    洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积 ...

  7. 题解-洛谷P4859 已经没有什么好害怕的了

    洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...

  8. 题解-洛谷P5217 贫穷

    洛谷P5217 贫穷 给定长度为 \(n\) 的初始文本 \(s\),有 \(m\) 个如下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\). \(\te ...

  9. 题解 洛谷 P2010 【回文日期】

    By:Soroak 洛谷博客 知识点:模拟+暴力枚举 思路:题目中有提到闰年然后很多人就认为,闰年是需要判断的其实,含有2月29号的回文串,前四位是一个闰年那么我们就可以直接进行暴力枚举 一些小细节: ...

随机推荐

  1. opensuse install oracle 11gR2 Error in invoking target 'agent nmhs' of makefile '../ins_emagent.mk'

    转自 http://blog.csdn.net/ly5156/article/details/6647563 遭遇Error in invoking target 'agent nmhs' of ma ...

  2. adb调试安卓

    http://blog.csdn.net/liushida00/article/details/49797239

  3. phpstorm一些简单配置

    1.字体大小和行间距 2.设置编码:包括编辑工具编码和项目编码

  4. 从Linux服务器下载文件到本地

    通过安装xshell,连接服务器,通过以下命令可以方便的将服务器的文件下载到本地 #下载一个文件 sz filename #下载多个文件 sz filename1 filename2 #下载dir目录 ...

  5. C#博客记录二

    1.认识运算符 我认为其中 最重要的就是逻辑运算符,对于每个人来说学习web前端就是要有一个好的思维.能够更好的运用. 2.算数运算符 变量名++意味先输出,值后增加. ++变量名意味值先增加,后输出 ...

  6. 使用 Azure CLI 创建虚拟机

    使用 az vm create 命令创建虚拟机. 创建虚拟机时,可使用多个选项,例如操作系统映像.磁盘大小调整和管理凭据. 在此示例中,创建了一个名为“myVM”的运行 Ubuntu Server 的 ...

  7. android框架Java API接口总注释/**@hide*/和internal API

    Android有两种类型的API是不能经由SDK访问的 l 第一种是位于com.android.internal包中的API我,位于frameworks/base/core/java/com/andr ...

  8. 了解WaitForSingleObject中WAIT_ABANDONED 返回值

    1.互斥量内核对象 互斥量内核对象用来确保一个线程独占对一个资源的访问.互斥量对象包含一个使用计数.线程ID以及递归计数.互斥量与关键段的行为完全相同.但是互斥量是内核对象,而关键段是用户模式下的同步 ...

  9. HDU 4731 找规律,打表

    http://acm.hust.edu.cn/vjudge/contest/126262#problem/D 分为3种情况,n=1,n=2,n>=3 其中需要注意的是n=2的情况,通过打表找规律 ...

  10. HTML表格相关元素

    <table> 标签定义 HTML 表格.简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成.tr 元素定义表格行,th 元素定义表头,td 元素定义 ...