青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

如果兩點的連線不和墻相交,那么在圖中為這兩點連一條邊,權值為這兩點的距離
然后做 Dijkstra

/*************************************************************************
Author: WHU_GCC
Created Time: 2007-8-12 19:53:33
File Name: pku1556.cpp
Description: 
***********************************************************************
*/

#include 
<iostream>
#include 
<cmath>
#include 
<vector>
#include 
<map>

#define maxn 1010
using namespace std;

#define out(x) (cout << #x << ": " << x << endl)
typedef 
long long int64;
const int maxint = 0x7FFFFFFF;
const int64 maxint64 = 0x7FFFFFFFFFFFFFFFLL;
template 
<class T> void show(T a, int n) for (int i = 0; i < n; ++i) cout << a[i] << ' '; cout << endl; }
template 
<class T> void show(T a, int r, int l) for (int i = 0; i < r; ++i) show(a[i], l); cout << endl; }

const double eps = 1e-9;

typedef 
double weight;

class graph_c
{
public:
    
void init(int _n);
    
void dijkstra(int S);
    
void add_edge(int u, int v, weight w);
    weight dist[maxn];
private:
    
int n;
    vector 
<int> r[maxn];
    vector 
<weight> e[maxn];
    
int pa[maxn];
    multimap 
<weight, int> h;
}
;

void graph_c::init(int _n)
{
    n 
= _n;
    
for (int i = 0; i < n; i++)
    
{
        r[i].clear();
        e[i].clear();
    }

}


void graph_c::add_edge(int u, int v, weight w)
{
    r[u].push_back(v);
    e[u].push_back(w);
}


void graph_c::dijkstra(int S)
{
    weight d, tmp;
    
int v;
    multimap
<weight, int>::iterator it;
    h.clear();
    
for (int i = 0; i < n; i++) dist[i] = -1;
    dist[S] 
= 0;
    pa[S] 
= -1;
    h.insert(multimap
<weight, int>::value_type(0, S));
    
while (!h.empty())
    
{
        it 
= h.begin();
        v 
= it->second;
        d 
= it->first;
        h.erase(it);
        
for (int i = 0; i < r[v].size(); i++)
        
{
            tmp 
= d + e[v][i];
            
int j = r[v][i];
            
if (dist[j] < 0 || tmp < dist[j])
            
{
                dist[j] 
= tmp;
                pa[j] 
= v;
                h.insert(multimap
<weight, int>::value_type(tmp, j));
            }

        }

    }

}


typedef 
struct point_t
{
    
double x, y;
}
;

typedef 
struct line_seg_t
{
    point_t s, e;
}
;

double dist(const point_t &a, const point_t &b)
{
    
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}


int dblcmp(double d)
{
    
if (abs(d) < eps) return 0;
    
return d > 0 ? 1 : -1;
}


double det(double x1, double y1, double x2, double y2)
{
    
return x1 * y2 - x2 * y1;
}


double cross(const point_t &a, const point_t &b, const point_t &c)
{
    
return det(b.x - a.x, b.y - a.y, c.x - a.x, c.y - a.y);
}


bool seg_intersect(const line_seg_t &a, const line_seg_t &b)
{
    
return (dblcmp(cross(a.s, b.s, b.e)) ^ dblcmp(cross(a.e, b.s, b.e))) == -2
        
&& (dblcmp(cross(b.s, a.s, a.e)) ^ dblcmp(cross(b.e, a.s, a.e))) == -2;
}


line_seg_t wall[
100];
int cnt_wall;
point_t p[
100];
int cnt_p;

graph_c g;

int main()
{
    
int n;
    
while (scanf("%d"&n), n != -1)
    
{
        cnt_wall 
= 0;
        cnt_p 
= 2;
        p[
0].x = 0.0;
        p[
0].y = 5.0;
        p[
1].x = 10.0;
        p[
1].y = 5.0;
        
for (int i = 0; i < n; i++)
        
{
            
double t1, t2, t3, t4, t5;
            scanf(
"%lf%lf%lf%lf%lf"&t1, &t2, &t3, &t4, &t5);
            point_t pp;
            pp.x 
= t1;
            pp.y 
= t2;
            p[cnt_p
++= pp;
            pp.y 
= t3;
            p[cnt_p
++= pp;
            pp.y 
= t4;
            p[cnt_p
++= pp;
            pp.y 
= t5;
            p[cnt_p
++= pp;

            line_seg_t t;
            t.s.x 
= t1;
            t.s.y 
= 0.0;
            t.e.x 
= t1;
            t.e.y 
= t2;
            wall[cnt_wall
++= t;

            t.s.x 
= t1;
            t.s.y 
= t3;
            t.e.x 
= t1;
            t.e.y 
= t4;
            wall[cnt_wall
++= t;

            t.s.x 
= t1;
            t.s.y 
= t5;
            t.e.x 
= t1;
            t.e.y 
= 10.0;
            wall[cnt_wall
++= t;
        }

        g.init(cnt_p);
        
for (int i = 0; i < cnt_p; i++)
            
for (int j = i + 1; j < cnt_p; j++)
            
{
                line_seg_t ls;
                ls.s 
= p[i];
                ls.e 
= p[j];
                
int flag = 1;
                
for (int k = 0; k < cnt_wall && flag; k++)
                    
if (seg_intersect(ls, wall[k])) flag = 0;
                
if (flag)
                
{
                    g.add_edge(i, j, dist(p[i], p[j]));
                    g.add_edge(j, i, dist(p[i], p[j]));
                }

            }

        g.dijkstra(
0);
        printf(
"%.2lf\n", g.dist[1]);
    }

    
return 0;
}
posted on 2007-08-13 10:34 Felicia 閱讀(488) 評論(0)  編輯 收藏 引用 所屬分類: 計算幾何
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲黄色性网站| 99视频有精品| 麻豆av一区二区三区| 亚洲永久在线观看| 亚洲视频每日更新| 亚洲欧美日韩精品久久亚洲区| 9色精品在线| 亚洲一区二区三区三| 亚洲深夜福利| 午夜视频在线观看一区二区三区 | 亚洲一区二区三区中文字幕| 亚洲人成网站777色婷婷| 欧美中文字幕在线| 久久精品国产亚洲a| 久久综合精品国产一区二区三区| 久久精品人人做人人综合| 久久亚洲国产精品日日av夜夜| 欧美不卡在线视频| 欧美高清视频在线播放| 亚洲欧洲精品成人久久奇米网| 一本色道久久88精品综合| 亚洲欧美清纯在线制服| 久久久噜噜噜久噜久久 | 亚洲一级片在线观看| 香蕉国产精品偷在线观看不卡| 久久久精品国产免费观看同学| 欧美久久久久| 国产日韩亚洲欧美| 亚洲六月丁香色婷婷综合久久| 先锋影院在线亚洲| 亚洲福利视频一区| 欧美一区二区三区四区高清| 欧美精品www| 国产日韩欧美三区| 一本色道久久综合亚洲二区三区| 久久成人羞羞网站| 日韩亚洲综合在线| 免费视频久久| 激情小说另类小说亚洲欧美| 午夜精品久久久久久久久久久久久| 麻豆精品在线观看| 亚洲欧美日韩在线播放| 欧美日韩亚洲综合在线| 在线观看中文字幕亚洲| 欧美一区二区福利在线| 亚洲最新在线| 欧美日韩精品系列| 99视频精品| 亚洲福利国产| 欧美成人一区二区三区| 一区在线免费| 久久人人97超碰人人澡爱香蕉| 亚洲一区二区三区视频| 欧美日韩亚洲激情| 亚洲另类黄色| 日韩视频不卡| 欧美精品自拍| 亚洲视频观看| 夜夜嗨av一区二区三区四季av| 欧美精品一区二区三区蜜桃| 日韩一二三区视频| 亚洲第一在线| 欧美1区2区3区| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美69视频| 亚洲欧美bt| 国产精品久久久久91| 亚洲午夜一区二区三区| 一区二区日韩伦理片| 欧美日韩国产在线观看| 亚洲午夜小视频| 亚洲永久免费精品| 一区视频在线| 亚洲免费成人| 国产乱人伦精品一区二区| 欧美专区在线播放| 久久天天躁狠狠躁夜夜av| 在线电影国产精品| 亚洲电影免费观看高清完整版在线观看 | 亚洲免费在线观看| 国产亚洲午夜| 欧美国产视频一区二区| 欧美国产一区二区三区激情无套| 在线精品福利| 亚洲精品乱码| 国产精品夜夜夜一区二区三区尤| 欧美影院成年免费版| 久久精品人人做人人爽电影蜜月| 亚洲第一成人在线| 日韩一级欧洲| 国产欧美日韩麻豆91| 欧美福利在线观看| 国产精品va| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美国产日韩一区| 午夜日韩激情| 欧美国产亚洲视频| 久久理论片午夜琪琪电影网| 欧美成人dvd在线视频| 在线亚洲一区二区| 久久av一区二区三区| 亚洲欧洲日本专区| 亚洲欧美日韩综合| 99re成人精品视频| 欧美在线观看你懂的| 日韩一级片网址| 久久久国产一区二区| 亚洲——在线| 免费不卡中文字幕视频| 欧美在线观看网站| 欧美日韩精品免费观看视一区二区| 久久综合给合久久狠狠色| 国产精品一区二区男女羞羞无遮挡 | 国产精品亚洲а∨天堂免在线| 久久婷婷影院| 午夜一区二区三区不卡视频| 亚洲第一福利在线观看| 亚洲无吗在线| 亚洲卡通欧美制服中文| 欧美在线3区| 欧美在线高清视频| 欧美三级电影精品| 亚洲日本精品国产第一区| 在线免费高清一区二区三区| 亚洲综合导航| 亚洲欧美国产日韩天堂区| 欧美精品日韩www.p站| 久久久之久亚州精品露出| 欧美午夜美女看片| 亚洲精品乱码久久久久久黑人| 亚洲二区精品| 美国十次了思思久久精品导航| 久久一区二区三区超碰国产精品| 国产日本欧美视频| 亚洲欧美日韩在线播放| 欧美亚洲免费在线| 国产精品视频xxxx| 亚洲视频中文字幕| 亚洲欧美日韩视频二区| 国产精品久久久久久久久久直播| 99精品国产在热久久| 亚洲自拍高清| 国产精品日韩精品| 亚洲欧美日韩精品久久久久| 久久成人综合视频| 国产精品性做久久久久久| 亚洲欧美日本精品| 久久精品国产v日韩v亚洲 | 欧美大片国产精品| 91久久亚洲| 正在播放欧美一区| 国产精品红桃| 性欧美xxxx大乳国产app| 久久久九九九九| 亚洲电影免费观看高清完整版在线观看 | 亚洲第一网站| 欧美日韩精品中文字幕| 一区二区高清视频| 欧美在线免费观看亚洲| 在线成人av.com| 欧美日韩国产麻豆| 亚洲自拍16p| 麻豆九一精品爱看视频在线观看免费| 亚洲黄色影院| 国产精品观看| 老**午夜毛片一区二区三区| 欧美二区在线播放| 一区二区三区免费观看| 国产精品一页| 久久亚洲私人国产精品va| 亚洲高清在线观看| 亚洲视频免费看| 国产在线精品二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲小说欧美另类婷婷| 久久精品国产v日韩v亚洲| 亚洲国产精品第一区二区三区| 欧美日韩精品一区二区三区四区| 亚洲永久精品国产| 欧美激情第六页| 欧美专区在线观看| 亚洲精品国产欧美| 国产欧美精品一区aⅴ影院| 久久精品一区二区三区不卡牛牛| 亚洲欧洲精品天堂一级| 久久久国产精品亚洲一区| 亚洲免费观看在线观看| 国产私拍一区| 欧美极品aⅴ影院| 久久久91精品国产| 亚洲一区二区三区777| 亚洲狠狠丁香婷婷综合久久久| 久久精品在线观看| 午夜精品理论片| 99国产麻豆精品| 亚洲大胆美女视频| 国产麻豆精品theporn| 欧美日韩一二三区| 欧美精品久久久久久久久老牛影院| 欧美在线影院在线视频|