• <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>
            我要啦免费统计
            http://acm.pku.edu.cn/JudgeOnline/problem?id=2253


            #include
            <iostream>
            #include
            <cmath>
            using namespace std;

            #define MAXN 1002
            #define inf 1000000000
            typedef 
            double elem_t;
            elem_t mat[MAXN][MAXN];
            elem_t dist[MAXN];
            int num[MAXN][2];

            double distance(int a1,int a2,int b1,int b2)
            {
                   
            return sqrt((double)((a1-b1)*(a1-b1)+(a2-b2)*(a2-b2)));
            }

            void dijkstra(int n,int s)
            {
                
            int v[MAXN],i,j;
                
            int k;
                
            for (i=0;i<n;i++)
                    dist[i]
            =mat[s][i],v[i]=0;//初始化
                
                
            for (dist[s]=0,j=0;j<n;j++){

                    
            for (k=-1,i=0;i<n;i++)//估計計距離最小的頂點k
                        if (!v[i]&&(k==-1||dist[i] < dist[k]))
                            k
            =i;

                    
            for (v[k]=1,i=0;i<n;i++)
                        
            if (!v[i] && mat[k][i]>0.0)//&& max(dist[k],mat[k][i]) > dist[i])
                            {
                                 dist[i] 
            = min( max(dist[k],mat[k][i]),dist[i]);
                                 
                              
            //dist[i]=min(dist[k],mat[k][i]);
                           }


                }

            }


            int main()
            {
                
                
            int n,m,k,x1,y1;
                
                
                
                
            for(int i = 1;;i ++){
                  scanf(
            "%d",&n);
                  
            if( n == 0)break;
                   memset(mat,
            0,sizeof(mat));
                   
            forint j=0;j<n;j++)
                     scanf(
            "%d %d",&num[j][0],&num[j][1]);
                   
            forint k=0;k<n;k++)
                     
            forint j=0;j<n;j++){
                        mat[k][j]
            =distance(num[k][0],num[k][1],num[j][0],num[j][1]);     
                     }


                   

                   dijkstra(n,
            0);

                   printf(
            "Scenario #%d\n",i);
                   printf(
            "Frog Distance = %0.3lf\n\n",dist[1]);//dist[n-1]<<endl<<endl;
                }


                
            return 0;
            }


            /*
            1
            3 3
            1 2 3
            1 3 4
            2 3 5

            */

            posted on 2008-11-06 21:55 閱讀(1857) 評論(6)  編輯 收藏 引用 所屬分類: pku

            評論:
            # re: pku 2253 Frogger 2008-11-06 22:51 | Wang Feng
            acm中如果涉及到圖的算法,可否直接使用boost graph library?  回復  更多評論
              
            # re: pku 2253 Frogger[未登錄] 2008-11-07 23:34 | cdy20
            一般自己寫,不用庫的。
            庫的靈活性不會好
            而且主要還是運行時間的問題
            有些題目,用類庫的很容易超時。@Wang Feng
              回復  更多評論
              
            # re: pku 2253 Frogger 2009-03-29 10:56 | 12342
            你好,請問
            for (v[k]=1,i=0;i<n;i++)
            if (!v[i] && mat[k][i]>0.0)//&& max(dist[k],mat[k][i]) > dist[i])
            {
            dist[i] = min( max(dist[k],mat[k][i]),dist[i]);

            //dist[i]=min(dist[k],mat[k][i]);
            }
            這是什么意思啊,這幾步的詳細作用是什么?謝謝,麻煩解釋一下!
              回復  更多評論
              
            # re: pku 2253 Frogger[未登錄] 2009-03-29 22:15 | cdy20
            @12342
            這是最基本的更新的
            d[i]表示源點到點i的路徑距離,這里取它最小的數
            min( max(dist[k],mat[k][i]),dist[i]);
            其中max(dist[k],mat[k][i])這一句表示每次跳,選擇的步子最長的
            min表示最短路的,有點dp的思想 min(d[i])
            每次更新d[i]
            。。。。。
            好好看題目的。“
            To execute a given sequence of jumps, a frog's jump range obviously must be at least as long as the longest jump occuring in the sequence.
            The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones.


              回復  更多評論
              
            # re: pku 2253 Frogger[未登錄] 2009-03-29 22:18 | cdy20
            這只froger每次跳的時候找鄰近可以跳的石頭,找那個些盡可能距離遠的

            然后總體結果路徑要想最短的
              回復  更多評論
              
            # re: pku 2253 Frogger 2009-03-30 13:51 | 12342
            又去看了看dijkstra,終于明白了!謝謝啊!!!  回復  更多評論
              
            99蜜桃臀久久久欧美精品网站 | 国产精品禁18久久久夂久| 亚洲日本久久久午夜精品| 一级a性色生活片久久无| 久久精品亚洲精品国产色婷| 热99re久久国超精品首页| 久久99久久无码毛片一区二区| 成人综合久久精品色婷婷| 色诱久久久久综合网ywww| 久久美女人爽女人爽| 日本精品久久久久久久久免费| 日韩人妻无码精品久久久不卡 | 91久久精品国产91性色也| 国产精品久久久久一区二区三区| 亚洲一级Av无码毛片久久精品| 91精品国产91久久久久福利| 老男人久久青草av高清| 精品久久久久久国产三级| 性欧美丰满熟妇XXXX性久久久| 久久播电影网| 国产免费福利体检区久久 | 99久久综合狠狠综合久久| 一本色道久久综合狠狠躁| 久久夜色撩人精品国产小说| 国产精品久久久久久久 | 国内精品久久久久久野外| 亚洲欧美日韩中文久久| 怡红院日本一道日本久久| 久久久久久精品免费看SSS| 久久国产亚洲精品麻豆| 97超级碰碰碰久久久久| 国产成人无码久久久精品一| 久久精品国产亚洲av麻豆图片 | 久久久久亚洲AV无码专区首JN| 亚洲v国产v天堂a无码久久| 久久久精品久久久久久 | 久久精品中文字幕一区| 日韩影院久久| 国内精品久久久久影院薰衣草| 久久久久久亚洲精品不卡| 国产激情久久久久影院老熟女免费 |