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

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>
            久久久久久亚洲精品不卡4k岛国| 久久er精品视频| 欧美涩涩网站| 欧美色综合网| 国产精品毛片va一区二区三区 | 欧美精品一区二区三区蜜臀| 久久夜色撩人精品| 裸体一区二区| 欧美理论大片| 国产精品大片wwwwww| 国产精品大片| 国产综合视频| 亚洲欧洲三级| 性色av香蕉一区二区| 另类春色校园亚洲| 欧美高清日韩| 中日韩高清电影网| 欧美在线视频免费| 久久夜色精品国产欧美乱| 欧美高清视频免费观看| 久久亚洲精品一区| 亚洲高清一二三区| 亚洲靠逼com| 一本色道久久99精品综合| 在线视频中文亚洲| 欧美资源在线| 亚洲国产日本| 性欧美办公室18xxxxhd| 免费在线欧美黄色| 国产欧美精品xxxx另类| 欧美日本不卡| 国产日本亚洲高清| 日韩午夜av在线| 久久成人免费日本黄色| 亚洲国产高清高潮精品美女| 亚洲免费婷婷| 欧美韩国日本一区| 国产一区二区三区最好精华液| 一卡二卡3卡四卡高清精品视频| 久久久福利视频| 国产精品99久久久久久久久久久久| 久久国产精品一区二区三区| 国产精品欧美久久| 葵司免费一区二区三区四区五区| 欧美日本一道本在线视频| 国产一区视频在线观看免费| 99精品视频免费| 老司机午夜精品视频| 亚洲一区欧美激情| 欧美视频在线观看 亚洲欧| 亚洲高清资源| 麻豆九一精品爱看视频在线观看免费| 亚洲网在线观看| 欧美日韩妖精视频| 一区二区三区 在线观看视频| 欧美顶级少妇做爰| 麻豆精品视频在线观看视频| 含羞草久久爱69一区| 久久精品视频va| 亚洲欧美美女| 国产情人节一区| 欧美一区二区视频在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美视频日韩视频在线观看| 亚洲天堂偷拍| 亚洲日韩第九十九页| 欧美成人一区二区三区片免费| 亚洲欧洲在线看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美一区二区啪啪| 国产日韩欧美麻豆| 久久久999| 久久久噜噜噜久噜久久| 欧美一区二区三区的| 国产亚洲福利社区一区| 久久久久久91香蕉国产| 久久国产精品99久久久久久老狼 | 欧美一级视频一区二区| 亚洲一区二区三区四区中文| 欧美日韩午夜剧场| 亚洲免费在线视频| 欧美亚洲一区三区| 小嫩嫩精品导航| 国模叶桐国产精品一区| 老牛国产精品一区的观看方式| 久久久久看片| 亚洲国产精品成人| 亚洲精品中文字幕在线| 国产精品久久一区二区三区| 欧美资源在线| 欧美第十八页| 亚洲男女自偷自拍| 欧美一区二区视频在线观看2020| 韩国av一区二区| 亚洲国产小视频| 国产欧美高清| 亚洲人成人77777线观看| 欧美日韩免费看| 久久久久久精| 欧美日韩中文精品| 久久久777| 欧美另类亚洲| 久久精品1区| 欧美激情综合色| 久久av在线看| 欧美日韩免费高清一区色橹橹| 久久久久国内| 欧美日韩国产三级| 久久久久久久一区| 欧美另类变人与禽xxxxx| 久久综合狠狠综合久久综青草 | 亚洲在线黄色| 蜜桃av一区| 久久久久久国产精品mv| 国产精品国产三级国产aⅴ无密码| 久久综合九色综合网站| 国产精品地址| 亚洲国产精品一区二区第一页 | 国产精品第十页| 亚洲第一精品夜夜躁人人躁| 国产欧美精品国产国产专区| 亚洲美女啪啪| 亚洲三级毛片| 久久久久91| 欧美一区二区视频网站| 亚洲欧美视频| 亚洲午夜精品网| 欧美激情中文不卡| 亚洲成人自拍视频| 性欧美xxxx大乳国产app| 一区二区三区 在线观看视| 蘑菇福利视频一区播放| 免费看av成人| 狠狠色丁香婷婷综合| 午夜精品福利电影| 亚洲欧美成aⅴ人在线观看| 欧美三级午夜理伦三级中文幕| 最新日韩在线| 99在线精品视频在线观看| 欧美大成色www永久网站婷| 欧美福利小视频| 亚洲大胆人体在线| 蜜月aⅴ免费一区二区三区| 欧美v日韩v国产v| 最新成人在线| 欧美激情一区二区三区在线视频观看| 欧美成人伊人久久综合网| 亚洲国产精品福利| 欧美国产视频日韩| 亚洲精品影院| 亚洲一区二区三区视频播放| 欧美色大人视频| 亚洲专区欧美专区| 久久一区中文字幕| 亚洲精品老司机| 欧美色区777第一页| 亚洲视频国产视频| 久久国产黑丝| 亚洲国产裸拍裸体视频在线观看乱了中文 | 麻豆精品传媒视频| 欧美国产视频日韩| 在线视频精品一| 国产精品美女久久久浪潮软件| 亚洲欧美成人精品| 欧美激情精品久久久久久免费印度 | 国产一区二区久久久| 久久久最新网址| 欧美激情一区二区三区全黄 | 亚洲韩日在线| 亚洲婷婷国产精品电影人久久| 国产精品久久福利| 久久亚洲精品网站| 亚洲美女区一区| 久久久国产91| 一区二区免费在线视频| 国产欧美日韩亚洲精品| 欧美大片免费观看| 国产精品久久福利| 香蕉久久夜色精品国产| 美女尤物久久精品| 中文国产成人精品久久一| 黄色一区二区在线观看| 欧美女激情福利| 午夜精品亚洲| 91久久国产自产拍夜夜嗨| 亚洲欧美综合网| 日韩午夜一区| 在线欧美福利| 国产精品一区二区视频| 欧美日韩国产免费| 久久久久久久综合| 这里只有精品丝袜| 亚洲激情成人在线| 久久精品72免费观看| 夜夜精品视频一区二区| 亚洲国产精品久久久久秋霞蜜臀| 国产欧美一区二区精品忘忧草| 欧美大胆成人| 猫咪成人在线观看| 久久精品一二三区|