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

隨筆 - 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?
如果有空的話請(qǐng)聯(lián)系我:357384984@qq.com
2011-04-23 21:47 | Veegin

只有注冊(cè)用戶登錄后才能發(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>
            久久中文欧美| 亚洲小说欧美另类社区| 欧美日韩亚洲不卡| 欧美成人69| 精品不卡一区| 久久av资源网站| 久久久久国产精品一区| 国产精品一区二区三区四区五区| 日韩亚洲欧美成人一区| 一区二区欧美激情| 欧美精品入口| 亚洲久久一区二区| 亚洲专区欧美专区| 国产精品久久久91| 亚洲欧美韩国| 久久一二三四| 亚洲国产1区| 美女网站在线免费欧美精品| 欧美国产三级| 日韩一级在线| 国产精品欧美一区二区三区奶水| 亚洲在线国产日韩欧美| 欧美中文字幕久久| 激情五月婷婷综合| 欧美国产日韩一二三区| 99www免费人成精品| 亚洲男人第一网站| 国产一区二区三区最好精华液 | 亚洲视频免费| 国产精品亚洲不卡a| 亚久久调教视频| 欧美a级片网| 在线亚洲一区| 国产综合久久久久久| 牛牛精品成人免费视频| 日韩亚洲一区二区| 久久激情网站| 亚洲伦理精品| 国产精品夜夜夜| 久久婷婷国产综合精品青草| 亚洲人成网站影音先锋播放| 亚洲在线一区二区| 狠狠色狠色综合曰曰| 欧美极品一区二区三区| 午夜精品福利一区二区三区av| 欧美ed2k| 亚洲欧美在线网| 亚洲国产美女| 国产欧美精品在线播放| 欧美激情第五页| 欧美一区二区三区四区在线观看地址| 亚洲高清网站| 久久精品日韩一区二区三区| 亚洲六月丁香色婷婷综合久久| 国产精品视频一区二区三区| 老司机午夜免费精品视频| 亚洲视频在线观看网站| 亚洲国产精品电影在线观看| 欧美在线综合| 亚洲少妇一区| 亚洲国产天堂久久综合网| 国产精品一区二区男女羞羞无遮挡 | 亚洲黄色av| 国产日韩专区在线| 欧美日韩国产不卡| 麻豆精品视频在线观看| 亚洲欧美另类国产| 99日韩精品| 欧美激情中文不卡| 久久久久久久久久码影片| 亚洲新中文字幕| 亚洲第一区色| 国产一区二区三区在线观看视频| 欧美天堂亚洲电影院在线观看| 欧美不卡在线| 久久免费视频观看| 欧美一区1区三区3区公司| 99一区二区| 亚洲欧洲一二三| 能在线观看的日韩av| 久久精品国产2020观看福利| 亚洲主播在线播放| 亚洲午夜性刺激影院| 亚洲精品国精品久久99热| 国产亚洲精品久| 国产精品午夜av在线| 欧美视频在线观看免费网址| 欧美黄色成人网| 免费不卡在线观看| 久久午夜激情| 久热精品在线视频| 久久久亚洲成人| 久久米奇亚洲| 乱码第一页成人| 久久这里有精品15一区二区三区| 欧美专区在线| 久久裸体艺术| 美女国产一区| 欧美成人国产一区二区| 开元免费观看欧美电视剧网站| 久久久欧美精品| 久色成人在线| 欧美大片一区| 欧美日韩不卡| 欧美网站在线| 国产精品久久看| 国产精品中文在线| 国产区二精品视| 精品不卡一区| 亚洲裸体俱乐部裸体舞表演av| 亚洲精品在线视频| 一本一本大道香蕉久在线精品| 夜夜精品视频| 性欧美1819性猛交| 久久五月天婷婷| 欧美成人国产一区二区| 亚洲国产精品va在线观看黑人| 最新亚洲一区| 中文久久精品| 久久精品日韩| 欧美激情一区二区久久久| 欧美日韩在线观看一区二区| 国产精品区二区三区日本| 国产亚洲欧美日韩美女| 亚洲国语精品自产拍在线观看| 一本色道久久加勒比88综合| 亚洲欧美国产一区二区三区| 久久精品午夜| 亚洲丁香婷深爱综合| 宅男噜噜噜66一区二区66| 性欧美8khd高清极品| 理论片一区二区在线| 欧美日韩免费观看一区| 国产欧美日韩专区发布| 亚洲高清资源| 午夜日韩在线观看| 欧美v日韩v国产v| 一本久久a久久免费精品不卡| 亚洲欧美三级在线| 欧美成人69av| 国产精品久久一级| 在线观看欧美激情| 亚洲欧美日韩电影| 欧美黑人国产人伦爽爽爽| 亚洲午夜久久久久久久久电影院 | 欧美视频中文一区二区三区在线观看| 国产精品系列在线| 亚洲国产导航| 香蕉亚洲视频| 亚洲日本激情| 欧美一级淫片播放口| 欧美片第一页| 136国产福利精品导航网址应用 | 亚洲欧美成人| 免费日韩av| 亚洲午夜影视影院在线观看| 久久人人爽人人爽| 国产欧美视频一区二区| 一区二区欧美在线| 欧美v国产在线一区二区三区| 亚洲主播在线观看| 欧美老女人xx| 91久久香蕉国产日韩欧美9色| 久久精品视频在线播放| 亚洲视频在线视频| 欧美日本一道本在线视频| 在线精品视频在线观看高清| 欧美在线高清| 一区二区三区欧美亚洲| 欧美高清视频在线| 在线观看日韩国产| 久久国产精品一区二区| 一区二区三区高清在线| 欧美黑人在线播放| 91久久精品国产91性色tv| 久久美女艺术照精彩视频福利播放| 亚洲一区二区三区在线| 欧美无乱码久久久免费午夜一区 | 国产日韩欧美不卡| 亚洲一区二区在线| 亚洲免费高清视频| 欧美成人免费大片| 亚洲国产一区在线| 欧美国产三区| 欧美本精品男人aⅴ天堂| 在线成人h网| 久久综合五月天婷婷伊人| 欧美一区二区免费| 国产目拍亚洲精品99久久精品| 亚洲午夜久久久| 在线亚洲自拍| 国产精品久久久久久久一区探花| 亚洲一区二区动漫| 在线一区二区三区四区| 国产精品成人免费精品自在线观看| 亚洲亚洲精品三区日韩精品在线视频| 日韩视频二区| 欧美日韩亚洲视频一区| 亚洲一区在线免费| 亚洲一区二区三区影院|