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

coj 1115

Lost City

Time Limit: 1000 MS  Memory Limit: 65536 K
Total Submit: 68 Accepted: 14

Description

Bob and Alice are visiting the “lost city”. It’s said that the guys who visit the city will be lost without the help of native. Bob is very interested in the story, and decides to travel alone. Can Bob break his destination? 
 Of course, Bob is prepared for his travel. No one want to be lost, is it? Bob marks every road he has visited so that he will never visit it a second time.
 Hours later, Bob has finally arrived at the position where he started his trip. Bob is so tired now and get back to the hotel to have a sleep immediately without telling Alice the path he has traveled in. Given the map, you are to help Alice calculate at least how far Bob has traveled.

Input

The input contains multiple test cases. 
For each test case, it contains n+1 lines.
Line 1: two integers m, n (1<= m <= 50, 1 <= n <= 2000) indicating that there are m cross and n roads in the city.
Line 2~n+1: each contains three integers i, j,d ( 1 <= i, j <= m , 1<= d <=100), indicating that there is a two way road connecting cross i and cross j. 
Bob starts from cross 1.

Output

Output the length of the shortest path Bob can travel. If there is no way Bob can finish his trip, just output “-1”

Sample Input

3 4
1 2 3
2 3 2
3 1 4
2 2 4

Sample Output

9

Source

langlang@hust


2009年7月25日

分類:最小環,dijkastra

題目分析與算法原型
        這道題目來自地大OJ,相當郁悶,WA了幾十次,題目有很多陷阱,比方說,重邊,還有自環,其次,重邊的時候處理還不能單單記錄最小的那條,因為題目是求從1節點出發回到1的最小環,所以極有可能會有這樣的情況出現,從1到某個節點x,有多條重邊,然后這個時候 從1出發經過某條邊到達x,然后又繞著他們之間另外的一條邊回到1,這樣子也算一個環,這個地方當初一直沒考慮到,因此貢獻了好幾次WA,然后自環的地方也錯了好幾次,最后,是flag[]數組初始化的錯誤,導致自己一直找不出來,淚奔.......
       這道題目的大致做法如下:枚舉每個和1相鄰的點,然后刪掉他們之間的這條邊,做一次Dijkastra,記錄下他們之間的最短路徑,將該路徑加上刪除邊的長度就是一個經過1的環的長度,保存下來,然后加回原來的那條邊,按此方法繼續,直到將所有的與1相鄰的點的枚舉一遍并且記錄下相應的環值大小
      注意:對于自環,只用記錄1到1這樣的自環(如果有,可能有多個,記錄最小的那個的值),其他的點的自環不用考慮,可以直接略掉,因為不影響本題;還有對于重邊的處理是,記錄兩個點之間(如果有多條重邊)最小和次小的那兩條邊的長度,然后將他們的和跟剛才計算的環的值做比較,取小的那個作為該環的最后的值,最后取所有環中最小的那個(如果有1到1的自環,則還有跟該自環的長度做一次比較,取較小的值)輸出

Code:  

  1
#include<stdio.h> 
  2#include<string.h> 
  3
  4#define max 1000000000 
  5
  6#define len 55 
  7
  8int i, j, map[len][len], dis[len], flag[len],m,n,u,_dis[len],res,pos[len][2]; 
  9bool finish; 
 10
 11void init() 
 12
 13    for(i=1;i<=m;i++
 14        for(j=1;j<=m;j++
 15        
 16            if(i==j)map[i][j]=0
 17            else map[i][j]=max; 
 18
 19            pos[j][0]=max; 
 20            pos[j][1]=max; 
 21            _dis[j]=max; 
 22        }
 
 23}
 
 24
 25void dij(int v0) 
 26
 27    for(i=1;i<=m;i++) dis[i]=map[v0][i]; 
 28    flag[v0]=1
 29
 30    for(i=1;i<m;i++
 31    
 32        int min=max; 
 33        for(j=1;j<=m;j++
 34            if(flag[j]==0&&dis[j]<min) 
 35            
 36                u=j; 
 37                min=dis[j]; 
 38            }
 
 39
 40        if(min==max)return ; 
 41        flag[u]=1
 42        for(j=1;j<=m;j++
 43            if(flag[j]==0&&map[u][j]<max&&dis[u]+map[u][j]<dis[j]) 
 44                dis[j]=dis[u]+map[u][j]; 
 45    }
 
 46}
 
 47
 48void DIJ() 
 49
 50    int p; 
 51    for(p=2;p<=m;p++
 52    
 53        if(map[1][p]<max) 
 54        
 55            int tt=map[1][p]; 
 56            map[1][p]=max; 
 57            map[p][1]=max; 
 58            memset(flag,0,sizeof(flag)); 
 59            dij(1); 
 60            _dis[p]=dis[p]; 
 61            map[1][p]=tt; 
 62            map[p][1]=tt; 
 63        }
 
 64    }
 
 65}
 
 66
 67int main() 
 68
 69    while(scanf("%d%d",&m,&n)!=EOF) 
 70    
 71        init(); 
 72        finish=false
 73        res = max; 
 74        for(i=0;i<n;i++
 75        
 76            int a,b,d; 
 77            scanf("%d%d%d",&a,&b,&d); 
 78             
 79            if(a==1&&b==1
 80            
 81                finish=true
 82                if(d < res) res=d; 
 83            }
 
 84            else if(a!=b) 
 85            
 86                if(d<map[a][b]) 
 87                
 88                    map[a][b]=d; 
 89                    map[b][a]=d; 
 90                }
 
 91                if(a>b) 
 92                
 93                    int t; 
 94                    t=a,a=b,b=t; 
 95                }
 
 96                if(a==1
 97                
 98                    int t=pos[b][0]; 
 99                    if(d<t) 
100                    
101                        pos[b][0]=d; 
102                        pos[b][1]=t; 
103                    }
 
104                    else if(d>=&& d<pos[b][1])pos[b][1]=d; 
105                }
 
106            }
 
107        }
 
108
109        DIJ(); 
110        int _min=max; 
111
112        for(i=2;i<=m;i++
113        
114            if(map[1][i]<max) 
115            
116                if(_dis[i]<max) 
117                    if(_dis[i]+map[1][i]<_min)_min=_dis[i]+map[1][i]; 
118
119                if(pos[i][0]+pos[i][1]<_min)_min=pos[i][0]+pos[i][1]; 
120            }
 
121        }
 
122
123        if(finish) 
124            if(res<_min)_min=res; 
125         
126        if(_min<max) printf("%d\n",_min); 
127        else printf("-1\n"); 
128    }
 
129
130    return 0
131}
 

posted on 2009-07-25 20:53 蝸牛也Coding 閱讀(1010) 評論(0)  編輯 收藏 引用

<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

導航

統計

常用鏈接

留言簿(8)

隨筆檔案(78)

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美色综合网| 欧美日本韩国在线| 国产在线观看一区| 久久久噜噜噜久久中文字幕色伊伊| 亚洲影视在线| 国产亚洲精品久| 欧美成人午夜视频| 欧美激情一区二区久久久| 一本一本久久a久久精品牛牛影视| 99精品99久久久久久宅男| 国产精品户外野外| 麻豆精品视频在线观看视频| 欧美风情在线| 亚洲欧美一区在线| 美玉足脚交一区二区三区图片| 亚洲美女性视频| 亚洲视频福利| 亚洲国产高清在线| 亚洲无线视频| 亚洲精品国产拍免费91在线| 亚洲午夜精品久久| 亚洲二区精品| 亚洲永久免费观看| 亚洲精品美女在线| 欧美一区不卡| 一本久道久久综合婷婷鲸鱼| 亚洲欧美一区二区三区在线 | 久久经典综合| 中国成人在线视频| 久久久久久国产精品一区| 亚洲一区二区三区涩| 久久精品国亚洲| 亚洲欧美在线一区| 欧美日韩国产黄| 免费观看亚洲视频大全| 国产精品卡一卡二卡三| 亚洲精品小视频在线观看| 国内外成人免费激情在线视频网站 | 欧美精品一区二| 久久嫩草精品久久久精品| 欧美性jizz18性欧美| 欧美国产精品人人做人人爱| 国产日本欧美一区二区| 一本色道久久99精品综合 | 欧美日韩美女在线| 欧美成人在线免费视频| 国产一区二区激情| 亚洲在线一区二区三区| 亚洲天堂男人| 欧美日韩不卡| 亚洲精品乱码久久久久久| 国内外成人免费激情在线视频| 亚洲一区图片| 午夜精品久久久久久久99樱桃| 欧美日韩在线三区| 日韩一级欧洲| 亚洲一卡久久| 国产精品美女视频网站| 亚洲无吗在线| 欧美在线观看视频一区二区| 国产精品日本欧美一区二区三区| 99re热这里只有精品视频| 一本大道久久a久久综合婷婷 | 久久人人看视频| 欧美aⅴ99久久黑人专区| 一区二区在线视频播放| 久久深夜福利| 欧美黑人国产人伦爽爽爽| 亚洲国产欧美一区二区三区久久 | 一区二区冒白浆视频| 欧美日韩在线播放三区| 亚洲午夜未删减在线观看| 小辣椒精品导航| 国产午夜精品视频| 久久亚洲综合| 亚洲精品一区二区在线观看| 亚洲深夜影院| 国产欧美日韩综合精品二区| 性欧美暴力猛交另类hd| 久久夜色精品国产| 亚洲国产一区视频| 欧美日韩国产在线一区| 亚洲一区二区精品| 玖玖玖国产精品| 日韩视频免费观看| 国产欧美一区视频| 久久综合九色| 99在线精品视频| 久久精品免费观看| 亚洲乱码国产乱码精品精98午夜| 欧美日韩国产在线播放网站| 亚洲欧美www| 欧美激情四色| 欧美一二区视频| 亚洲国产精品一区在线观看不卡| 欧美日韩午夜激情| 久久精品123| 日韩网站在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲精品一二| 国产一区二区三区在线观看网站| 免费一级欧美片在线播放| 亚洲天堂av电影| 亚洲第一精品福利| 久久超碰97人人做人人爱| 亚洲久久成人| 精品成人一区二区| 国产精品久久久久9999高清| 久久免费高清视频| 亚洲欧美日本另类| 日韩一区二区免费看| 欧美sm重口味系列视频在线观看| 亚洲欧美另类综合偷拍| 亚洲欧洲一区二区三区久久| 国产视频一区在线| 国产精品亚洲片夜色在线| 欧美成人一二三| 久久久久久久波多野高潮日日| 亚洲色在线视频| 日韩特黄影片| 亚洲欧洲三级电影| 欧美刺激午夜性久久久久久久| 久久精品夜夜夜夜久久| 亚洲欧美日韩国产综合精品二区| 日韩视频一区二区三区在线播放| 一区视频在线播放| 国产日韩欧美不卡在线| 国产精品区一区二区三| 欧美午夜精品久久久久久久| 欧美大片专区| 欧美刺激午夜性久久久久久久| 久久久久免费视频| 久久久精品五月天| 久久精品99久久香蕉国产色戒| 午夜精品久久久久久久 | 久久免费国产精品| 米奇777在线欧美播放| 久久久久久亚洲精品中文字幕 | 一区二区三区国产在线| 99视频精品全部免费在线| 亚洲人妖在线| 日韩一级免费观看| 一区二区三区产品免费精品久久75 | 欧美日韩国产一区| 欧美日韩一区二区三区四区在线观看| 欧美高清在线精品一区| 欧美成在线观看| 欧美日韩亚洲视频一区| 欧美少妇一区二区| 国产精品亚洲综合天堂夜夜| 国产伦精品一区二区三区照片91| 国产精品影视天天线| 黑人巨大精品欧美黑白配亚洲| 一区在线播放| 日韩视频免费大全中文字幕| 一区二区国产精品| 欧美一区国产一区| 嫩草影视亚洲| 亚洲国产精品一区二区尤物区| 亚洲精品国产拍免费91在线| 一区二区三区国产在线| 午夜一区不卡| 麻豆乱码国产一区二区三区| 欧美日韩国产二区| 国产亚洲精品久久久久久| 亚洲高清av| 亚洲天堂av图片| 久久久高清一区二区三区| 老司机免费视频一区二区三区| 欧美激情成人在线视频| 国产乱人伦精品一区二区| 亚洲国产91| 亚洲女同同性videoxma| 久久综合伊人77777| 亚洲精品美女久久7777777| 亚洲专区一区| 欧美黄色视屏| 国产日韩在线不卡| 99av国产精品欲麻豆| 久久久久成人网| 一本久道综合久久精品| 久久综合九色九九| 欧美激情亚洲精品| 亚洲欧美日韩第一区| 欧美另类亚洲| 在线观看国产日韩| 欧美一区二区精品在线| 亚洲人www| 久久综合色婷婷| 国产欧美日韩91| 这里只有精品在线播放| 欧美激情影音先锋| 欧美在线首页| 国产精品免费视频观看| 日韩视频在线一区二区| 女人色偷偷aa久久天堂| 亚洲欧美成人一区二区三区| 欧美日韩亚洲另类| 日韩视频免费观看高清在线视频| 久久久天天操|