题意:给定N个点,现在要求出从1号点到N号点的最短路。题目给的限制条件就是对于某条路径是不能够走的,但是可以选择某段路径走,另外就是所走的路径的标号必须是递增的。

分析:由于给定的是一些列的坐标点,这也就说原图其实是一个完全图。对于限制路径,其实只要限制的路径上点数超过2,那么明显可以选择从起点直接走到终点这条最短路来代替限制路径,因此该限制不起作用,而对于限制路径上点数为2的路径则需要标记一下不能够取。对于最终路径要求点坐标路径递增这一条件则直接在floyd处理的时候限制好i,j,k三者的关系即可。

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define sqr(x) ((x)*(x))
using namespace std; const int N = ;
const double eps = 1e-;
int n, m;
int seq[N];
double mp[N][N]; int sign(const double &x) {
return x < -eps ? - : x > eps ? : ;
} struct Point {
double x, y;
bool operator == (const Point &t) const {
return !sign(x-t.x) && !sign(y-t.y);
}
}p[N]; double dist(int a, int b) {
return sqrt(sqr(p[a].x-p[b].x) + sqr(p[a].y-p[b].y));
} void floyd() {
for (int k = ; k < n; ++k) {
for (int i = ; i < k; ++i) {
if (!sign(mp[i][k]+)) continue;
for (int j = k+; j < n; ++j) {
if (!sign(mp[k][j]+)) continue;
if (!sign(mp[i][j]+) || sign(mp[i][j]-(mp[i][k]+mp[k][j])) > ) {
mp[i][j] = mp[i][k] + mp[k][j];
}
}
}
}
} int main() {
while (scanf("%d %d", &n, &m), n|m) {
for (int i = ; i < n; ++i) {
for (int j = ; j < n; ++j) mp[i][j] = ;
scanf("%lf %lf", &p[i].x, &p[i].y);
}
int t;
for (int i = ; i < m; ++i) {
scanf("%d", &t);
for (int j = ; j < t; ++j) {
scanf("%d", &seq[j]);
}
if (t == && !(p[seq[]-] == p[seq[]-])) {
mp[seq[]-][seq[]-] = mp[seq[]-][seq[]-]= -;
}
}
for (int i = ; i < n; ++i) {
for (int j = i+; j < n; ++j) {
if (sign(mp[i][j]+)) mp[i][j] = mp[j][i] = dist(i, j);
}
}
floyd();
if (sign(mp[][n-]+)) printf("%.2f\n", mp[][n-]);
else puts("Can not be reached!");
}
return ;
}

HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路的更多相关文章

  1. HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)

    小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  2. HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)

    小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  3. HDU - 4511 小明系列故事――女友的考验(AC自己主动机+DP)

    Description 最终放寒假了,小明要和女朋友一起去看电影.这天,女朋友想给小明一个考验,在小明正准备出发的时候.女朋友告诉他.她在电影院等他,小明过来的路线必须满足给定的规则:  1.如果小明 ...

  4. HDU 4511 小明系列故事——女友的考验 ( Trie图 && DP )

    题意 :  给出编号从1 ~ n 的 n 个平面直角坐标系上的点,求从给出的第一个点出发到达最后一个点的最短路径,其中有两种限制,其一就是只能从编号小的点到达编号大的点,再者不能走接下来给出的 m 个 ...

  5. HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)题解

    题意:从 1 走到 n,要求所走路径不能出现给定的路径,求最短路 思路:因为要求不能出现给定路径,那么我可以求助ac自动机完成判断. 我们可以在build的时候标记哪些路径不能出现,显然下面这种表示后 ...

  6. HDU4511 小明系列故事——女友的考验 —— AC自动机 + DP

    题目链接:https://vjudge.net/problem/HDU-4511 小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memor ...

  7. 小明系列故事――女友的考验 HDU - 4511 AC自动机+简单DP

    题意:自己看题目,中文体面. 题解: 把所有不能走的路径放入AC自动机中. 然后DP[i][j]表示走到 i 这个点,且位于AC自动机 j 这个节点最短距离 然后直接DP即可.注意一点会爆int #i ...

  8. HDU4511 小明系列故事——女友的考验(AC自动机 + DP)

    题目大概说有平面有n个点,从1点出发走到n点,每一步只能走到序号比当前更大的点且走的序列不能包含给定的m个序列中的任何一个,问1走到n的最短路. 用m个序列建个AC自动机,后缀包含整个序列的结点标记一 ...

  9. hdu4511小明系列故事——女友的考验(ac自动机+最短路)

    链接 预处理出来任意两点的距离,然后可以顺着trie树中的节点走,不能走到不合法的地方,另开一维表示走到了哪里,依次来更新. 注意判断一下起点是不是合法. #include <iostream& ...

随机推荐

  1. Nagios监控Oralce

    一.本文说明: 本文是监控本地的Oracle,其实监控远端的Oracle也是跟下面的步骤差不多的. 二.安装Nagios.Nagios插件.NRPE软件: 安装步骤可以参考<Linux下Nagi ...

  2. string转换成color转

    string转换成color             string col = "#FF8400";            this.BackColor = System.Draw ...

  3. Effective C++第三遍

    试图调用private的copy或赋值函数是编译期错误,而调用没有具体定义的函数则是连接期错误. 以对象管理资源:智能指针RAII(资源获取立即初始化)后都是对象,但有时候,比如(API的)函数参数要 ...

  4. Struts输出流向jsp页面写入图片乱码

    通过Struts2输出字节流将图片写到jsp页面上,之前用jquery的div对象的html()方法接收一直显示乱码,查了很多网页都找不到解决办法,不是说contentype="multip ...

  5. [ios]离屏渲染优化

    原文链接:https://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=2709544818&idx=1&sn=62d0d2e9a ...

  6. 收藏的Android非常好用的组件或者框架。

    博客分类: android android框架 先说两个网站: http://www.androidviews.net/ http://www.theultimateandroidlibrary.co ...

  7. [团队项目]----Math Calculator

    团队项目 ----Math Calculator 任务: 1.每个团队从Github上fork这个项目的源代码 https://github.com/RABITBABY/We-have-bing 2. ...

  8. poj1961 Period

    我们考虑KMP算法中fail失配指针的意义. 对于一个模式串(Pattern),位置i对应的失配指针fail[i]是那个位置: 这个位置满足的条件是,子串[0, fail[i])是位置i(不含)的后缀 ...

  9. C Looooops(扩展欧几里得)

    C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20128 Accepted: 5405 Descripti ...

  10. recv send 阻塞和非阻塞

    http://blog.csdn.net/xiaofei0859/article/details/6037814 int send( SOCKET s, const char FAR *buf, in ...