zoukankan      html  css  js  c++  java
  • luoguP1354房间最短路问题

    判断两点间连通性,建图跑floyed

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=105;
     4 struct node
     5 {
     6     double z[5],x;
     7 }q[N];double e[N][N];
     8 double dis(double x1,double y1,double x2,double y2)
     9 {
    10     return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    11 }
    12 bool come(int i,int j,int a,int b)
    13 {
    14     if(j-i<2)return 0;
    15     double x1=q[i].x,x2=q[j].x,y1=q[i].z[a],y2=q[j].z[b];if(x1==x2)return 1;
    16     double k=(y1-y2)/(x1-x2),bb=y1-x1*k;
    17     for(i=i+1;i<j;++i)
    18     {
    19         double y=q[i].x*k+bb;
    20         if(y<q[i].z[1]||(y>q[i].z[2]&&y<q[i].z[3])||y>q[i].z[4])return 1;
    21     }
    22     return 0;
    23 }
    24 void add(int i,int j,int a,int b)
    25 {
    26     if(come(i,j,a,b))return;
    27     e[i*4+a][j*4+b]=e[j*4+b][i*4+a]=dis(q[i].x,q[i].z[a],q[j].x,q[j].z[b]);
    28 }
    29 int main()
    30 {
    31     int n;
    32     scanf("%d",&n);
    33     for(int i=1;i<=n;++i)
    34     {
    35         scanf("%lf",&q[i].x);
    36         for(int j=1;j<=4;++j)scanf("%lf",&q[i].z[j]);
    37     }
    38     q[0].x=0;q[++n].x=10;
    39     for(int i=1;i<=4;++i)q[0].z[i]=q[n].z[i]=5;
    40     for(int i=1;i<=n*4+4;++i)for(int j=1;j<=n*4+4;++j)e[i][j]=1e9;
    41     
    42     for(int i=0;i<=n;++i)
    43     for(int j=i+1;j<=n;++j)
    44     for(int a=1;a<=4;++a)
    45     for(int b=1;b<=4;++b)
    46     add(i,j,a,b);
    47     for(int k=1;k<=n*4+4;++k)
    48     for(int i=1;i<=n*4+4;++i)
    49     for(int j=1;j<=n*4+4;++j)
    50     e[i][j]=min(e[i][j],e[i][k]+e[k][j]);
    51     printf("%.2lf",e[1][n*4+1]);
    52     return 0;
    53 }
  • 相关阅读:
    文章截断显示方法
    mysql数据库基础知识和认识
    js 返回上一页和刷新以及页面跳转
    编译原理根据项目集规范族构造LR(0)分析表
    编译原理LR(0)项目集规范族的构造详解
    编译原理复习
    FIRST集合、FOLLOW集合及LL(1)文法求法
    UML时序图
    UML活动图(二)
    UML活动图(Activity Diagram)
  • 原文地址:https://www.cnblogs.com/nbwzyzngyl/p/8110373.html
Copyright © 2011-2022 走看看