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

隨筆 - 19, 文章 - 0, 評(píng)論 - 2, 引用 - 0
數(shù)據(jù)加載中……

杭電1142 A Walk Through the Forest

        這一星期我在學(xué)習(xí)單源最短路徑,今天是這一星期的最后一天。我半寫(xiě)半?yún)⒖嫉膶?xiě)出了這一題,要用到DFS+Dijsktra。

        題目是讓求一個(gè)點(diǎn)到另一個(gè)點(diǎn)的“前進(jìn)的”(就是越走離家越近,這是一個(gè)難點(diǎn),不然就做不出來(lái))路徑的條數(shù)。算法思想是:先求出家到每一個(gè)頂點(diǎn)的最短路徑,然后用深搜求出從公司到家的路徑的條數(shù)。

 

#include <stdio.h>
#include 
<memory.h>
#define debug 1
#define N 1010
//要注意不要把Max定義的太大,不然會(huì)在做加法時(shí)溢出,
// 當(dāng)然,要是不做加法,就沒(méi)事了,可以定義為2147483647
//也可以用 __int64 ,但是那樣的效率比較低 
#define Max 10000000

int n ;
int map[N][N], dis[N], used[N], num[N] ;

void Input( )
{
    
int i, j, x, m, y, distance ;
    
for( i=1; i<=n; ++i ){
        
for( j=1; j<=n; ++j ){
            map[i][j] 
= Max ;
        }

        
//自己到自己的最短路徑是0 
        map[i][i] = 0 ;
    }
    
    scanf(
"%d"&m ) ; 
    
for( i=0; i<m; ++i ){
        scanf(
"%d%d%d"&x, &y, &distance ) ;
        
//用無(wú)向圖來(lái)存儲(chǔ)數(shù)據(jù) 
        map[x][y] = distance ;
        map[y][x] 
= distance ;
    }
    
}


void Dijstra( int v )
{
    
int i, j, min, index ;
    
for( i=1; i<=n; ++i ){
        
//求家到各個(gè)頂點(diǎn)的初始路徑的距離,如果沒(méi)有路徑,就是Max 
        dis[i] = map[v][i] ;
        
//用來(lái)標(biāo)記是否已經(jīng)求過(guò) 
        used[i] = 0 ;
    }

    
// 從家里出發(fā),家已經(jīng)走過(guò),標(biāo)記為1,下同 
    used[v] = 1 ;
    
for( i=1; i<=n; ++i ){
        min 
= Max ;
        index 
= v ;
        
//找到與每一個(gè)已標(biāo)記過(guò)的頂點(diǎn)之間距離最小的頂點(diǎn) 
        for( j=1; j<=n; ++j ){
            
if!used[j] && min > dis[j] ){
                index 
= j ;
                min 
= dis[j] ;
            }

        }

        
//已經(jīng)找到,標(biāo)記 
        used[index] = 1 ;
        
//更新與剛找到的頂點(diǎn)相鄰的頂點(diǎn)的最短路徑 
        for( j=1; j<=n; ++j ){
            
if( dis[j] > dis[index] + map[index][j] )
                dis[j] 
= dis[index] + map[index][j] ;
        }

    }
           
}


int DFS( int nod )
{
    
int i, count ;
    
//如果已到家,就返回1,表示找到了一條路 
    if( nod == 2 )
        
return 1 ;
    
//如果這一點(diǎn)已經(jīng)求過(guò),就返回這一點(diǎn)到家的路徑的條數(shù)    
    if( num[nod] > 0 )
        
return num[nod] ;    
    count 
= 0 ;
    
//對(duì)每一個(gè)頂點(diǎn)進(jìn)行判斷,并求路徑的條數(shù) 
    for( i=1; i<=n; ++i ){
        
if( map[i][nod]<Max && dis[i]<dis[nod] )
            count 
+= DFS( i ) ;
    }

    
//標(biāo)記路徑的條數(shù),并返回值 
    num[nod] = count ;
    
return count ;        
}


int main()
{
    
// 輸入輸出的重定向,便于調(diào)試,在提交時(shí)要把debug改成0 
    #if debug
    freopen(
"C:\\Documents and Settings\\Administrator\\桌面\\in.in","r",stdin) ;
    freopen(
"C:\\Documents and Settings\\Administrator\\桌面\\out.out","w",stdout) ;
    
#endif
    
    
while( scanf("%d",&n) && n ){
        
//讀入數(shù)據(jù) 
        Input( ) ;
        
//調(diào)用Dijsktra 求家到每一個(gè)節(jié)點(diǎn)的最短路徑 
        Dijstra( 2 ) ;
        
// 數(shù)據(jù)初始化 
        memset( num, 0sizeof(num) ) ;
        
// 用深搜求的路徑的條數(shù) 
        printf("%d\n", DFS( 1 ) ) ; 
    }
        
    
return 0 ;
}

posted on 2009-05-03 17:35 祝你好運(yùn)! 閱讀(540) 評(píng)論(1)  編輯 收藏 引用

評(píng)論

# re: 杭電1142 A Walk Through the Forest  回復(fù)  更多評(píng)論   

我想請(qǐng)問(wèn)下,你的程序測(cè)試如下數(shù)據(jù):
5 7
1 3 2
1 4 2
3 4 3
1 5 12
4 2 34
5 2 24
5 3 11
輸出4,為什么不是2?
如果有空的話(huà)請(qǐng)聯(lián)系我:357384984@qq.com
2011-04-23 21:47 | Veegin

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲伊人色欲综合网| 欧美电影电视剧在线观看| 狠狠88综合久久久久综合网| 欧美日韩国产在线看| 久久精品女人| 性欧美大战久久久久久久久| 亚洲少妇在线| 99视频精品免费观看| 亚洲国产日韩欧美在线图片| 欧美一区免费| 亚洲一区在线免费| 一区二区精品国产| 亚洲另类视频| 亚洲区一区二| 最新亚洲激情| 亚洲清纯自拍| 亚洲精品美女| 亚洲欧美日韩一区| 99精品视频免费观看| 亚洲国产婷婷综合在线精品| 欧美大尺度在线| 欧美电影在线观看完整版| 麻豆精品在线观看| 免费不卡视频| 亚洲第一级黄色片| 91久久久一线二线三线品牌| 亚洲激情社区| 99精品99久久久久久宅男| 99精品视频一区二区三区| 一本色道久久精品| 正在播放欧美一区| 亚洲午夜日本在线观看| 亚洲视频在线观看免费| 亚洲香蕉伊综合在人在线视看| 中文国产成人精品| 亚洲午夜在线观看视频在线| 亚洲欧美日韩国产成人| 欧美在线亚洲在线| 久久亚洲国产成人| 欧美激情精品久久久久久免费印度 | 亚洲乱码国产乱码精品精98午夜 | 99精品久久久| 一本色道久久88综合日韩精品| 99香蕉国产精品偷在线观看| 亚洲综合清纯丝袜自拍| 久久久99久久精品女同性| 免费亚洲一区二区| 最新日韩欧美| 亚洲午夜久久久| 久久国产精品久久国产精品 | 日韩一级片网址| 亚洲尤物影院| 久久久久久自在自线| 欧美高清免费| 99视频精品全部免费在线| 亚洲欧美制服中文字幕| 久久婷婷久久| 欧美日韩一视频区二区| 国产美女一区二区| 影音先锋在线一区| 99re66热这里只有精品3直播| 亚洲免费在线观看视频| 久久婷婷蜜乳一本欲蜜臀| 亚洲高清网站| 亚洲午夜精品一区二区| 久久在线观看视频| 欧美亚洲成人精品| 在线精品高清中文字幕| 亚洲午夜电影网| 玖玖玖免费嫩草在线影院一区| 亚洲二区视频| 亚洲午夜三级在线| 欧美xxx在线观看| 午夜精品久久久久久久白皮肤 | 亚洲高清不卡一区| 中文欧美字幕免费| 久久综合久久88| 99这里只有精品| 久久婷婷久久| 国产欧美日韩亚州综合| 亚洲免费大片| 久久综合色8888| 亚洲香蕉视频| 欧美精品九九| 今天的高清视频免费播放成人 | 亚洲欧美日韩高清| 欧美v日韩v国产v| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲国产va精品久久久不卡综合| 正在播放亚洲| 欧美护士18xxxxhd| 性伦欧美刺激片在线观看| 欧美精品一区二区三区高清aⅴ| 国产综合久久久久久| 亚洲一本视频| 亚洲激情国产精品| 久久综合狠狠综合久久综合88| 国产伦精品一区二区三| 一区二区高清视频在线观看| 欧美成人高清| 久久成人精品一区二区三区| 国产精品日韩欧美一区| 这里只有精品视频在线| 欧美高清视频一区二区三区在线观看 | 久久精品国产亚洲一区二区| 亚洲免费观看高清完整版在线观看熊| 久久久久成人网| 国产精品久久久久久亚洲毛片| 亚洲人成在线观看一区二区| 久久综合狠狠综合久久综合88| 亚洲欧美视频在线观看视频| 欧美日韩中文在线| 99精品国产福利在线观看免费| 欧美黑人多人双交| 玖玖综合伊人| 在线国产精品一区| 麻豆精品精华液| 久久精品国产精品亚洲精品| 国产一区91精品张津瑜| 欧美中文字幕视频在线观看| 亚洲在线视频免费观看| 国产精品久久一区主播| 亚洲欧美美女| 亚洲专区欧美专区| 国产精品一区二区欧美| 欧美一区二区大片| 午夜精品久久久久| 国产亚洲激情视频在线| 久久精品亚洲| 久久精品国产在热久久 | 欧美成ee人免费视频| 久久久综合视频| 在线观看视频一区二区| 国产日韩一区在线| 午夜欧美大尺度福利影院在线看 | 蜜桃av综合| 亚洲人成网站精品片在线观看 | 在线午夜精品| 国产精品毛片va一区二区三区| 亚洲一区二区黄| 亚洲天堂男人| 国产欧美日韩三区| 久久久久久久网| 久久另类ts人妖一区二区| 在线精品视频一区二区三四| 欧美高清在线播放| 欧美日本一区| 亚洲欧美资源在线| 欧美亚洲日本网站| 影音先锋欧美精品| 亚洲激情偷拍| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 99精品欧美一区二区蜜桃免费| 欧美日韩国产一区二区三区地区 | 香蕉久久夜色精品| 国内外成人免费视频| 欧美国产日产韩国视频| 欧美精品久久久久a| 亚洲欧美高清| 久久精品视频免费观看| 亚洲精品一区二区在线观看| av成人动漫| 国产一区二区三区高清| 欧美国产三区| 欧美日韩一区二区视频在线 | 9l视频自拍蝌蚪9l视频成人| 国产精品九九| 另类亚洲自拍| 欧美理论视频| 久久国内精品自在自线400部| 久久久久在线| 亚洲视频精品| 久久久国产成人精品| 99国产一区二区三精品乱码| 亚洲影视在线| 亚洲欧洲日本一区二区三区| 亚洲视频在线视频| 亚洲第一黄网| 亚洲午夜精品国产| 亚洲大片av| 亚洲天堂久久| 欧美在线观看www| 夜夜狂射影院欧美极品| 久久av在线| 中国成人亚色综合网站| 久久精品中文字幕一区二区三区| 日韩一二在线观看| 性欧美大战久久久久久久免费观看| 亚洲精品黄色| 欧美一区久久| 亚洲一区久久| 欧美成人自拍视频| 久久久久久久网站| 国产精品大全| 亚洲国产一区二区三区a毛片| 国产亚洲一区二区三区| 日韩午夜激情| 亚洲国产成人久久综合一区| 亚洲影院免费| 一区二区三区国产盗摄|