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

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>
            国产精品嫩草影院一区二区| 欧美一区二区视频在线观看| 西瓜成人精品人成网站| 99视频精品全国免费| av不卡免费看| 亚洲自拍16p| 久久久久久久综合日本| 久久尤物电影视频在线观看| 欧美激情亚洲综合一区| 一二三四社区欧美黄| 亚洲欧美国产日韩天堂区| 久久国产精品免费一区| 欧美成人在线影院| 欧美午夜精品久久久久久久 | 美女91精品| 欧美精品在线一区二区| 国产精品日日摸夜夜摸av| 激情伊人五月天久久综合| 99精品久久久| 久久精品一区| 亚洲激情一区二区| 亚洲午夜性刺激影院| 久久久久五月天| 亚洲伦伦在线| 久久精品视频va| 国产精品99免视看9| 一区精品在线| 午夜精品美女久久久久av福利| 免费欧美在线| 亚洲制服丝袜在线| 欧美精品在线免费播放| 国模精品娜娜一二三区| 亚洲四色影视在线观看| 欧美激情免费观看| 欧美在线你懂的| 欧美性做爰毛片| 亚洲日韩欧美一区二区在线| 久久精品中文| 亚洲自拍偷拍视频| 欧美午夜电影完整版| 日韩亚洲精品在线| 亚洲第一精品久久忘忧草社区| 亚洲制服av| 国产精品videossex久久发布| 亚洲国产高清一区二区三区| 久久久久久噜噜噜久久久精品| 在线一区欧美| 欧美日韩亚洲高清| a4yy欧美一区二区三区| 欧美激情影音先锋| 久久青青草原一区二区| 国产日韩一区二区三区| 欧美一区久久| 亚洲综合二区| 国产日韩亚洲| 久久综合导航| 久久影音先锋| 最新日韩在线视频| 91久久久在线| 欧美日韩三级| 亚洲男女自偷自拍| 香蕉乱码成人久久天堂爱免费 | 欧美一区二区三区免费观看视频| 国产精品扒开腿做爽爽爽软件| 中文亚洲欧美| 亚洲一区二区三区激情| 国产精品高潮呻吟久久av黑人| 亚洲视频久久| 亚洲一线二线三线久久久| 国产欧美精品日韩精品| 久久九九久久九九| 久久久国产亚洲精品| 亚洲国产中文字幕在线观看| 亚洲国产精品日韩| 欧美日韩另类字幕中文| 午夜精品久久久久久久男人的天堂 | 欧美成人精品| 欧美日韩精品在线| 亚洲自拍偷拍色片视频| 欧美亚洲网站| 亚洲国产视频a| 日韩视频免费观看| 国产亚洲成年网址在线观看| 欧美69wwwcom| 欧美日韩美女在线| 久久久人成影片一区二区三区| 美女黄毛**国产精品啪啪| 日韩视频中午一区| 亚洲欧美日韩直播| 红桃av永久久久| 日韩午夜精品| 黄色一区二区在线| 一区二区三区鲁丝不卡| 尤物精品国产第一福利三区| 亚洲精品一品区二品区三品区| 国产精品丝袜久久久久久app| 噜噜噜噜噜久久久久久91| 欧美另类一区| 久久综合九色综合欧美狠狠| 欧美色精品在线视频| 老司机凹凸av亚洲导航| 欧美性猛交xxxx免费看久久久| 久久久久久亚洲精品中文字幕| 欧美丰满少妇xxxbbb| 久久国产日韩| 欧美日韩无遮挡| 亚洲第一精品久久忘忧草社区| 国产欧美日韩精品在线| 亚洲精品亚洲人成人网| 一区二区三区在线观看欧美| 一本久道久久综合中文字幕| 在线观看视频一区| 欧美在线高清| 欧美一区二区精品久久911| 欧美人交a欧美精品| 欧美黑人在线观看| 激情成人在线视频| 午夜精品免费| 亚洲自拍偷拍一区| 欧美精品一区二区三区在线播放 | 欧美国产精品一区| 六月婷婷久久| 韩国成人福利片在线播放| 亚洲天堂偷拍| 亚洲欧美国产高清| 欧美日韩免费观看一区三区 | 日韩手机在线导航| 亚洲精品久久久久久久久久久久久 | 久久尤物视频| 韩国av一区二区| 欧美一区二区三区电影在线观看| 亚洲欧美在线高清| 国产精品午夜在线| 亚洲欧美日韩久久精品| 国产一级精品aaaaa看| 亚洲欧美欧美一区二区三区| 性久久久久久久久久久久| 国产精品久久97| 中日韩美女免费视频网址在线观看| 亚洲乱码日产精品bd| 欧美成人一区二区| 亚洲美女精品久久| 亚洲一区国产一区| 国产精品自拍三区| 午夜精品一区二区三区在线视| 欧美在线看片| 国产一区三区三区| 久久夜色精品国产欧美乱| 欧美成人精品影院| 一本色道久久| 国产精品久久久久9999| 午夜视黄欧洲亚洲| 久久五月婷婷丁香社区| 亚洲激情国产| 欧美日韩一区二区三区在线视频| 一区二区欧美精品| 欧美一区二区三区免费视频| 国产一区二区高清不卡| 免费国产一区二区| 亚洲视频一区二区| 老色批av在线精品| 在线视频日韩| 国产精品主播| 蜜桃伊人久久| 亚洲图色在线| 欧美jizz19hd性欧美| 亚洲视频在线一区| 国产亚洲毛片| 欧美激情一区二区三区蜜桃视频 | 亚洲一级在线| 欧美 日韩 国产精品免费观看| 99精品久久久| 国产一区久久| 欧美日韩一区综合| 亚洲欧美综合精品久久成人| 欧美11—12娇小xxxx| 亚洲影音先锋| 亚洲精品久久| 国模 一区 二区 三区| 欧美视频二区36p| 美女啪啪无遮挡免费久久网站| 亚洲永久在线| 亚洲精品国偷自产在线99热| 久久久噜噜噜久久| 亚洲免费伊人电影在线观看av| 亚洲激情一区| 激情欧美一区二区三区| 国产精品人人爽人人做我的可爱 | 亚洲国产精品电影| 国产美女在线精品免费观看| 欧美久久久久| 麻豆国产精品777777在线| 西瓜成人精品人成网站| 99综合精品| 亚洲毛片av在线| 亚洲日韩视频| 亚洲国产欧美在线| 欧美国产大片| 女人色偷偷aa久久天堂| 久久久一二三|