题目传送门

这是一道次短路的板子题,和“路障”那一题不同的是,这个题的次短路不是严格大于最短路,所以连分类讨论都不用了,直接记录路径后删边求最短路即可。

下面给出参考程序:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
double z,w[200005],dist[200005];
double minn1,lesss,ans1=21374404;
int path[100000],cnt,num,n,m,x,y,v[200005],nxt[200005],head[200005],pre[200005],edge[200005],a[200005],b[200005];
bool vis[200005];
void add(int a,int b,double c)
{v[++cnt]=b;w[cnt]=c;nxt[cnt]=head[a];head[a]=cnt;
}
void spfa(int s)
{for(int i=1;i<=n;i++)dist[i]=336860180;queue<int>q;q.push(s);dist[s]=0;vis[s]=1;while(!q.empty()){int c=q.front();q.pop();vis[c]=0;for(int i=head[c];i;i=nxt[i]){int y=v[i];if(dist[y]>dist[c]+w[i]){pre[y]=i;edge[y]=c;dist[y]=dist[c]+w[i];if(!vis[y]){q.push(y);vis[y]=1;}}}}
}
double num1(int s,int q)
{return sqrt((a[s]-a[q])*(a[s]-a[q])+(b[s]-b[q])*(b[s]-b[q]));
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i]>>b[i];}for(int i=1;i<=m;i++){cin>>x>>y;z=num1(x,y);add(x,y,z);add(y,x,z);}spfa(1);minn1=dist[n];int now=n;while(now!=1){path[++num]=pre[now];now=edge[now];}for(int i=1;i<=num;i++){double s=w[path[i]];w[path[i]]=99999999;spfa(1);lesss=dist[n];ans1=min(ans1,lesss);w[path[i]]=s;}if(ans1==21374404)cout<<"-1";else printf("%.2lf",ans1);return 0;
}

  

转载于:https://www.cnblogs.com/szmssf/p/11011558.html

P1491 集合位置相关推荐

  1. 洛谷 P1491 集合位置

    P1491 集合位置 题目描述 每次有大的活动,大家都要在一起"聚一聚",不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草 ...

  2. Luogu P1491 集合位置 (spfa--次短路)

    题目描述 每次有大的活动,大家都要在一起"聚一聚",不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的高 ...

  3. AC日记——集合位置 洛谷 P1491

    集合位置 思路: 次短路: 先走一遍最短路: 记录最短路径,然后依次删边走最短路: 最短的长度就是次短路: 来,上代码: #include <queue> #include <cma ...

  4. 集合位置(洛谷 P1491)

    集合位置 题目描述 每次有大的活动,大家都要在一起"聚一聚",不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺 ...

  5. usaco ★Subset Sums 集合

    ★Subset Sums 集合 对于从 1 到 N 的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果 N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数 ...

  6. Java基础篇:Java集合

    文章目录 1.概述 2.Collection接口 2.1 Collection接口方法 2.2 Iterator迭代器接口 2.3 Collection子接口之:List接口 2.4 Collecti ...

  7. 洛谷P1466 集合 Subset Sums

    P1466 集合 Subset Sums 162通过 308提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 对于从1到N (1 ...

  8. 集合 Subset Sums

    题目描述 对于从1到N的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的: {3} and ...

  9. P1466 集合 Subset Sums 搜索+递推+背包三种做法

    题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子 ...

  10. 集合、set、list、map、所有集合基本知识使用方法总结

    1.集合的概述 集合概述:就是一个专门存放多个引用数据类型对象的容器[重点::只能存放引用数据类型] 特点:1.它可以存放多种数据类型对象2.集合的长度可变的3.支持泛型 面试题:集合和数组的对比 数 ...

最新文章

  1. HTML与CSS基础知识补遗(一)
  2. 聚焦互联网应用和深度学习
  3. 计算机期末考试操作题简单,计算机期末考试操作题及答案计算机期末考试操作题及答案.doc...
  4. Verilog inout 双向口使用和仿真
  5. NSIS打包软件使用
  6. 微服务pact测试框架_消费者驱动的Pact和Spring Boot测试
  7. Eclipse IDE中的Java 9 module-info文件
  8. android根据拍摄url获取格式,Android如何通过URI获取文件路径示例代码
  9. js固定表格行列_纯前端表格控件SpreadJS V14.0发布:组件化编辑器+数据透视表
  10. [转载] Python 迭代器 深入理解 与应用示例
  11. 辽宁省计算机专业A类,辽宁省中职升高职招生考试计算机及应用专业综合课试卷(共2份)...
  12. 【zookeeper】zookeeper 查看ZK连接总数
  13. Android开发笔记(五十四)数据共享接口ContentProvider
  14. 4k*1芯片 计算机组成,计算机组成原理的大神们能不能帮忙做几道题啊
  15. 科学家组建大数据平台解决科研资源共享难题
  16. 怎么用软件设计班旗_设计制作:班旗设计
  17. 医学图像分析中的光密度参数
  18. MacBook pro 用什么vpn 好_扫地机器人真得好用么?云米互联网扫地机Pro测评!
  19. 华三服务器hdm时间怎么修改,华三服务器HDM命令设置
  20. 目录服务器的互联网协议是,各个网络协议汇总(01)

热门文章

  1. 龙芯提供的jna-4.5.2,没有libjnidispatch.so,也能用
  2. 从openjdk.java.net获取OpenJDK8源码并编译(amd64/aarch64/arm64)
  3. config.guess: unable to guess system type、config.sub: missing argument
  4. IDEA回到光标的上一次位置
  5. 因循守旧最好:都是CPU架构,为什么你叫sw_64,而不是sw64?多别扭啊
  6. Ubuntu截屏功能
  7. LINUX搭建EtherCalc环境
  8. 你抢购盐干什么?要抢购也是先选大米啊
  9. 脚本比别人的代码都多
  10. 狐狸抓老鼠,为何东北向才会成功