锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成色999久久网站,四虎国产精品免费久久,人妻精品久久久久中文字幕69 http://www.shnenglu.com/MiYu/category/14589.html ______________鐧界櫧銇眿zh-cnSun, 15 Aug 2010 16:54:24 GMTSun, 15 Aug 2010 16:54:24 GMT60HDOJ 1548 HDU 1548 A strange lift ACM 1548 IN HDU http://www.shnenglu.com/MiYu/archive/2010/08/15/123506.htmlMiYuMiYuSun, 15 Aug 2010 08:19:00 GMThttp://www.shnenglu.com/MiYu/archive/2010/08/15/123506.htmlhttp://www.shnenglu.com/MiYu/comments/123506.htmlhttp://www.shnenglu.com/MiYu/archive/2010/08/15/123506.html#Feedback0http://www.shnenglu.com/MiYu/comments/commentRss/123506.htmlhttp://www.shnenglu.com/MiYu/services/trackbacks/123506.htmlMiYu鍘熷垱, 杞笘璇鋒敞鏄?: 杞澆鑷?______________鐧界櫧銇眿

棰樼洰鍦板潃:
         http://acm.hdu.edu.cn/showproblem.php?pid=1548
棰樼洰鎻忚堪:
A strange lift
Time Limit: 
2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 
2641    Accepted Submission(s): 944


Problem Description
There 
is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 <= Ki <= N) on every floor.The lift have just two buttons: up and down.When you at floor i,if you press the button "UP" , you will go up Ki floor,i.e,you will go to the i+Ki th floor,as the same, if you press the button "DOWN" , you will go down Ki floor,i.e,you will go to the i-Ki th floor. Of course, the lift can't go up high than N,and can't go down lower than 1. For example, there is a buliding with 5 floors, and k1 = 3, k2 = 3,k3 = 1,k4 = 2, k5 = 5.Begining from the 1 st floor,you can press the button "UP", and you'll go up to the 4 th floor,and if you press the button "DOWN", the lift can'do it, because it can't go down to the -2 th floor,as you know ,the -2 th floor isn't exist.
Here comes the problem: when you 
is on floor A,and you want to go to floor B,how many times at least he havt to press the button "UP" or "DOWN"?

 

Input
The input consists of several test cases.,Each test 
case contains two lines.
The first line contains three integers N ,A,B( 
1 <= N,A,B <= 200) which describe above,The second line consist N integers k1,k2,.kn.
A single 
0 indicate the end of the input.
 

Output
For each 
case of the input output a interger, the least times you have to press the button when you on floor A,and you want to go to floor B.If you can't reach floor B,printf "-1".
 

Sample Input
5 1 5
3 3 1 2 5
0
 

Sample Output
3

棰樼洰鍒嗘瀽:
        榪欓鍙堟槸涓涓爣鍑嗙殑  Dijkstra 綆楁硶鐨勯鐩?( 鏈鐭礬 ).  瑕佽闅懼害鍚?  瀵規(guī)垜鑰岃█鍚? 灝辨槸 鍥劇殑鐢熸垚.
鍒氬紑濮嬪仛鐨勬椂鍊欒嚜宸辨兂澶嶆潅浜? 浠ヤ負(fù)浠庝笉鍚岀殑妤煎眰寮濮? 灝辨湁涓嶅悓鐨勮蛋娉? 鎵浠ュ紑濮嬬殑鏃跺欏啓寰幆娌″啓瀵?
灝卞啓鎴愪簡閫掑綊.   緇撴灉寰堟澂鍏風(fēng)殑 STACK_OVERFLOW........   鍦?AMB 紲炵墰鐨勬寚鐐瑰彂鐜? 鍘熸潵鏄嚜宸辨兂澶嶆潅浜?
鍙渶瑕佽綆楀嚭姣忎竴涓ゼ灞傜殑 涓婃ゼ 鍜?涓嬫ゼ灝卞彲浠ヤ簡, 褰撶劧, 瑕佹敞鎰忔槸鍚﹁秺鐣?  鍥劇敓鎴愬悗, 褰撶劧灝辨槸 DIJKSTRA浜?

闂叉潵鏃犱簨, 鍙堝鍒朵竴閬?:
            Dijkstra綆楁硶鐨勫熀鏈濊礬鏄細(xì)

         鍋囪姣忎釜鐐歸兘鏈変竴瀵規(guī)爣鍙?(dj, pj)錛屽叾涓璬j鏄粠璧鋒簮鐐箂鍒扮偣j鐨勬渶鐭礬寰勭殑闀垮害 (浠庨《鐐瑰埌鍏舵湰韜殑鏈鐭礬寰勬槸闆惰礬(娌℃湁寮х殑璺?錛屽叾闀垮害絳変簬闆?錛?br>
pj鍒欐槸浠巗鍒癹鐨勬渶鐭礬寰勪腑j鐐圭殑鍓嶄竴鐐廣傛眰瑙d粠璧鋒簮鐐箂鍒扮偣j鐨勬渶鐭礬寰勭畻娉曠殑鍩烘湰榪囩▼濡備笅錛?br>
銆銆1) 鍒濆鍖栥傝搗婧愮偣璁劇疆涓猴細(xì)鈶?ds=0, ps涓虹┖;鈶?鎵鏈夊叾浠栫偣: di=∞, pi=?;鈶?鏍囪璧鋒簮鐐箂錛岃k=s,鍏朵粬鎵鏈夌偣璁句負(fù)鏈爣璁扮殑銆?br>
銆銆2) 媯(gè)楠屼粠鎵鏈夊凡鏍囪鐨勭偣k鍒板叾鐩存帴榪炴帴鐨勬湭鏍囪鐨勭偣j鐨勮窛紱伙紝騫惰緗細(xì)


dj=min錛籨j, dk+lkj錛?br>


寮忎腑錛宭kj鏄粠鐐筴鍒癹鐨勭洿鎺ヨ繛鎺ヨ窛紱匯?br>
銆銆3) 閫夊彇涓嬩竴涓偣銆備粠鎵鏈夋湭鏍囪鐨勭粨鐐逛腑錛岄夊彇dj 涓渶灝忕殑涓涓猧錛?br>


di=min錛籨j, 鎵鏈夋湭鏍囪鐨勭偣j錛?br>


鐐筰灝辮閫変負(fù)鏈鐭礬寰勪腑鐨勪竴鐐癸紝騫惰涓哄凡鏍囪鐨勩?br>
銆銆4) 鎵懼埌鐐筰鐨勫墠涓鐐廣備粠宸叉爣璁扮殑鐐逛腑鎵懼埌鐩存帴榪炴帴鍒扮偣i鐨勭偣j*錛屼綔涓哄墠涓鐐?璁劇疆錛歩=j*

銆銆5) 鏍囪鐐筰銆傚鏋滄墍鏈夌偣宸叉爣璁幫紝鍒欑畻娉曞畬鍏ㄦ帹鍑猴紝鍚﹀垯錛岃k=i錛岃漿鍒?) 鍐嶇戶緇?/p>



浠g爜濡備笅:
#include <iostream>
using namespace std;
const int MAX = 200;
const int INF = 0x7FFFFFF;
int N,A,B;
int g[MAX+1][MAX+1];
int hash[MAX+1];
int path[MAX+1];
int K[MAX+1];
int Dijkstra ( int beg , int end )
{
    path[beg] 
= 0;
    hash[beg] 
= false;
    
while ( beg != end )
    {
            
int m = INF, temp;
            
for ( int i = 1; i <= N; ++ i )
            {
                  
if ( g[beg][i] != INF )
                       path[i] 
= min ( path[i], path[beg] + g[beg][i] );
                  
if ( m > path[i] && hash[i] )
                  {
                       m 
= path[i];
                       temp 
= i; 
                  }           
            }
            beg 
= temp;
            
if ( m == INF )
                 
break;
            hash[beg] 
= false;
    }
    
if ( path[end] == INF )
         
return -1;
    
return path[end]; 
}

int main ()
{
    
while ( scanf ( "%d%d%d"&N, &A, &B ) , N )
    {
            
for ( int i = 0; i <= MAX; ++ i )
            {
                  hash[i] 
= true;
                  path[i] 
= INF;
                  
for ( int j = 0; j <= MAX; ++ j )
                  {
                        g[i][j] 
= INF;
                  } 
            }
            
for ( int i = 1; i <= N; ++ i )
            {
                  scanf ( 
"%d",&K[i] );
            } 
            
for ( int i = 1; i <= N; ++ i )
            {
                  
if ( i + K[i] <= N )
                       g[ i ][ i 
+ K[i] ] = 1
                  
if ( i - K[i] >= 1 )
                       g[ i ][ i 
- K[i] ] = 1
            }
            cout 
<< Dijkstra ( A, B ) << endl;
    }
    
return 0
}


SO 浠g爜:
#include <iostream>
using namespace std;
const int MAX = 200;
const int INF = 0x7FFFFFF;
bool UP = true;
bool DOWN = false;
int N,A,B;
int g[MAX+1][MAX+1];
int hash[MAX+1];
int path[MAX+1];
int K[MAX+1];

int Dijkstra ( int beg , int end )
{
    path[beg] 
= 0;
    hash[beg] 
= false;
    
while ( beg != end )
    {
            
int m = INF, temp;
            
for ( int i = 1; i <= N; ++ i )
            {
                  
if ( g[beg][i] != INF )
                       path[i] 
= min ( path[i], path[beg] + g[beg][i] );
                  
if ( m > path[i] && hash[i] )
                  {
                       m 
= path[i];
                       temp 
= i; 
                  }           
            }
            beg 
= temp;
            
if ( m == INF )
                 
break;
            hash[beg] 
= false;
    }
    
if ( path[end] == INF )
         
return -1;
    
return path[end]; 
}

bool setGraph ( int n, bool flag )
{
     
if ( flag ) 
     {
          
if ( n + K[n] <= N )
          {
               g[ n ][ n 
+ K[n] ] = 1;
               setGraph ( n 
+ K[n], UP );
               setGraph ( n 
+ K[n], DOWN );
          }  
     }
     
else
     {
          
if ( n - K[n] >= 1 )
          {
               g[ n  ][ n 
- K[n] ] = 1;
               setGraph ( n 
- K[n], UP );
               setGraph ( n 
- K[n], DOWN ); 
          } 
     }
     
return true;
}
int main ()
{
    
while ( scanf ( "%d%d%d"&N, &A, &B ) , N )
    {
            
for ( int i = 0; i <= MAX; ++ i )
            {
                  hash[i] 
= true;
                  path[i] 
= INF;
                  
for ( int j = 0; j <= MAX; ++ j )
                  {
                        g[i][j] 
= INF;
                  } 
            }
            
for ( int i = 1; i <= N; ++ i )
            {
                  scanf ( 
"%d",&K[i] );
            } 
            
for ( int i = 1; i <= N; ++ i )
            {
                  setGraph ( i, UP );
                  setGraph ( i, DOWN ); 
            }
            cout 
<< Dijkstra ( A, B ) << endl;
    }
    
return 0
}


MiYu 2010-08-15 16:19 鍙戣〃璇勮
]]>
HDOJ 1874 HDU 1874 鐣呴氬伐紼嬬畫 ACM 1874 IN HDU http://www.shnenglu.com/MiYu/archive/2010/08/15/123490.htmlMiYuMiYuSun, 15 Aug 2010 05:15:00 GMThttp://www.shnenglu.com/MiYu/archive/2010/08/15/123490.htmlhttp://www.shnenglu.com/MiYu/comments/123490.htmlhttp://www.shnenglu.com/MiYu/archive/2010/08/15/123490.html#Feedback0http://www.shnenglu.com/MiYu/comments/commentRss/123490.htmlhttp://www.shnenglu.com/MiYu/services/trackbacks/123490.htmlMiYu鍘熷垱, 杞笘璇鋒敞鏄?: 杞澆鑷?______________鐧界櫧銇眿

棰樼洰鍦板潃:
         http://acm.hdu.edu.cn/showproblem.php?pid=1874
棰樼洰鎻忚堪:
鐣呴氬伐紼嬬畫
Time Limit: 
3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 
5528    Accepted Submission(s): 1686


Problem Description
鏌愮渷鑷粠瀹炶浜嗗緢澶氬勾鐨勭晠閫氬伐紼嬭鍒掑悗錛岀粓浜庝慨寤轟簡寰堝璺備笉榪囪礬澶氫簡涔熶笉濂斤紝姣忔瑕佷粠涓涓煄闀囧埌鍙︿竴涓煄闀囨椂錛岄兘鏈夎澶氱閬撹礬鏂規(guī)鍙互閫夋嫨錛岃屾煇浜涙柟妗堣姣斿彟涓浜涙柟妗堣璧扮殑璺濈瑕佺煭寰堝銆傝繖璁╄浜哄緢鍥版壈銆?br>
鐜板湪錛屽凡鐭ヨ搗鐐瑰拰緇堢偣錛岃浣犺綆楀嚭瑕佷粠璧風(fēng)偣鍒扮粓鐐癸紝鏈鐭渶瑕佽璧板灝戣窛紱匯?br> 

Input
鏈鐩寘鍚緇勬暟鎹紝璇峰鐞嗗埌鏂囦歡緇撴潫銆?br>姣忕粍鏁版嵁絎竴琛屽寘鍚袱涓鏁存暟N鍜孧(
0<N<200,0<M<1000)錛屽垎鍒唬琛ㄧ幇鏈夊煄闀囩殑鏁扮洰鍜屽凡淇緩鐨勯亾璺殑鏁扮洰銆傚煄闀囧垎鍒互0锝濶-1緙栧彿銆?br>鎺ヤ笅鏉ユ槸M琛岄亾璺俊鎭傛瘡涓琛屾湁涓変釜鏁存暟A,B,X(0<A,B<N,A!=B,0<X<10000),琛ㄧず鍩庨晣A鍜屽煄闀嘊涔嬮棿鏈変竴鏉¢暱搴︿負(fù)X鐨勫弻鍚戦亾璺?br>鍐嶆帴涓嬩竴琛屾湁涓や釜鏁存暟S,T(0<=S,T<N)錛屽垎鍒唬琛ㄨ搗鐐瑰拰緇堢偣銆?br> 

Output
瀵逛簬姣忕粍鏁版嵁錛岃鍦ㄤ竴琛岄噷杈撳嚭鏈鐭渶瑕佽璧扮殑璺濈銆傚鏋滀笉瀛樺湪浠嶴鍒癟鐨勮礬綰匡紝灝辮緭鍑?/span>-1.

 

Sample Input
3 3
0 1 1
0 2 3
1 2 1
0 2
3 1
0 1 1
1 2
 

Sample Output
2
-1

棰樼洰鍒嗘瀽:
鏈鐭礬鐨勫叆闂ㄩ鐩?

Dijkstra綆楁硶鐨勫熀鏈濊礬鏄細(xì)

         鍋囪姣忎釜鐐歸兘鏈変竴瀵規(guī)爣鍙?(dj, pj)錛屽叾涓璬j鏄粠璧鋒簮鐐箂鍒扮偣j鐨勬渶鐭礬寰勭殑闀垮害 (浠庨《鐐瑰埌鍏舵湰韜殑鏈鐭礬寰勬槸闆惰礬(娌℃湁寮х殑璺?錛屽叾闀垮害絳変簬闆?錛?br>
pj鍒欐槸浠巗鍒癹鐨勬渶鐭礬寰勪腑j鐐圭殑鍓嶄竴鐐廣傛眰瑙d粠璧鋒簮鐐箂鍒扮偣j鐨勬渶鐭礬寰勭畻娉曠殑鍩烘湰榪囩▼濡備笅錛?br>
銆銆1) 鍒濆鍖栥傝搗婧愮偣璁劇疆涓猴細(xì)鈶?ds=0, ps涓虹┖;鈶?鎵鏈夊叾浠栫偣: di=∞, pi=?;鈶?鏍囪璧鋒簮鐐箂錛岃k=s,鍏朵粬鎵鏈夌偣璁句負(fù)鏈爣璁扮殑銆?br>
銆銆2) 媯(gè)楠屼粠鎵鏈夊凡鏍囪鐨勭偣k鍒板叾鐩存帴榪炴帴鐨勬湭鏍囪鐨勭偣j鐨勮窛紱伙紝騫惰緗細(xì)


dj=min錛籨j, dk+lkj錛?br>


寮忎腑錛宭kj鏄粠鐐筴鍒癹鐨勭洿鎺ヨ繛鎺ヨ窛紱匯?br>
銆銆3) 閫夊彇涓嬩竴涓偣銆備粠鎵鏈夋湭鏍囪鐨勭粨鐐逛腑錛岄夊彇dj 涓渶灝忕殑涓涓猧錛?br>


di=min錛籨j, 鎵鏈夋湭鏍囪鐨勭偣j錛?br>


鐐筰灝辮閫変負(fù)鏈鐭礬寰勪腑鐨勪竴鐐癸紝騫惰涓哄凡鏍囪鐨勩?br>
銆銆4) 鎵懼埌鐐筰鐨勫墠涓鐐廣備粠宸叉爣璁扮殑鐐逛腑鎵懼埌鐩存帴榪炴帴鍒扮偣i鐨勭偣j*錛屼綔涓哄墠涓鐐?璁劇疆錛歩=j*

銆銆5) 鏍囪鐐筰銆傚鏋滄墍鏈夌偣宸叉爣璁幫紝鍒欑畻娉曞畬鍏ㄦ帹鍑猴紝鍚﹀垯錛岃k=i錛岃漿鍒?) 鍐嶇戶緇?/p>


浠g爜濡備笅:
#include <iostream>
using namespace std;
const int MAX = 201;
const int INF = 0x7FFFFFF;
int graph[MAX][MAX];    
bool hash[MAX];
int path[MAX];
int N,M;
int Dijkstra ( int beg , int end )
{
    path[beg] 
= 0;
    hash[beg] 
= false;
    
while ( beg != end )
    {
            
int m = INF, temp;
            
for ( int i = 0; i != N; ++ i )
            {
                  
if ( graph[beg][i] != INF )
                       path[i] 
= min ( path[i], path[beg] + graph[beg][i] );
                  
if ( m > path[i] && hash[i] )
                  {
                       m 
= path[i];
                       temp 
= i; 
                  }           
            }
            beg 
= temp;
            
if ( m == INF )
                 
break;
            hash[beg] 
= false;
    }
    
if ( path[end] == INF )
         
return -1;
    
return path[end]; 
}
int main ()
{
    
while ( scanf ( "%d%d"&N, &M ) != EOF )
    {
            
for ( int i = 0; i != MAX; ++ i )
            {
                  hash[i] 
= true;
                  path[i] 
= INF;
                  
for ( int j = 0; j != MAX; ++ j )
                  {
                        graph[i][j] 
= INF;        
                  }
            } 
            
for ( int i = 0; i != M; ++ i )
            {
                  
int c1,c2,cost;
                  scanf ( 
"%d%d%d",&c1, &c2, &cost );
                  
if ( cost < graph[c1][c2] )
                       graph[c1][c2] 
= graph[c2][c1] = cost;      
            }
            
int beg,end;
            scanf ( 
"%d%d",&beg, &end );
            cout 
<< Dijkstra ( beg,end ) << endl;
    }
    
return 0
}


MiYu 2010-08-15 13:15 鍙戣〃璇勮
]]>
HDOJ 2066 HDU 2066 涓涓漢鐨勬梾琛?ACM 2066 IN HDU http://www.shnenglu.com/MiYu/archive/2010/08/15/123487.htmlMiYuMiYuSun, 15 Aug 2010 03:31:00 GMThttp://www.shnenglu.com/MiYu/archive/2010/08/15/123487.htmlhttp://www.shnenglu.com/MiYu/comments/123487.htmlhttp://www.shnenglu.com/MiYu/archive/2010/08/15/123487.html#Feedback0http://www.shnenglu.com/MiYu/comments/commentRss/123487.htmlhttp://www.shnenglu.com/MiYu/services/trackbacks/123487.htmlMiYu鍘熷垱, 杞笘璇鋒敞鏄?: 杞澆鑷?______________鐧界櫧銇眿

棰樼洰鍦板潃:
         http://acm.hdu.edu.cn/showproblem.php?pid=2066
棰樼洰鎻忚堪:
涓涓漢鐨勬梾琛?br>Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 
4077    Accepted Submission(s): 1348


Problem Description
铏界劧鑽夊効鏄釜璺棿錛堝氨鏄湪鏉數(shù)寰呬簡涓騫村錛屽眳鐒惰繕浼?xì)鍦ㄦ牎鍥噷杩疯矾鐨勪汉锛屾?/span>~),浣嗘槸鑽夊効浠嶇劧寰堝枩嬈㈡梾琛岋紝鍥犱負(fù)鍦ㄦ梾閫斾腑 浼?xì)閬囪寰堝錆h錛堢櫧椹帇瀛愶紝^0^錛夛紝寰堝浜嬶紝榪樿兘涓板瘜鑷繁鐨勯槄鍘嗭紝榪樺彲浠ョ湅緹庝附鐨勯鏅?#8230;…鑽夊効鎯沖幓寰堝鍦版柟錛屽ス鎯寵鍘諱笢浜搧濉旂湅澶滄櫙錛屽幓濞佸凹鏂湅鐢?shù)濯?jiǎng)錛屽幓闃蟲槑灞變笂鐪嬫搗鑺嬶紝鍘葷航綰︾函綺圭湅闆櫙錛屽幓宸撮粠鍠濆挅鍟″啓淇★紝鍘誨寳浜帰鏈涘瓱濮滃コ……鐪肩湅瀵掑亣灝卞揩鍒頒簡錛岃繖涔堜竴澶ф鏃墮棿錛屽彲涓嶈兘嫻垂鍟婏紝涓瀹氳緇欒嚜宸卞ソ濂界殑鏀句釜鍋囷紝鍙槸涔熶笉鑳借崚搴熶簡璁粌鍟婏紝鎵浠ヨ崏鍎垮喅瀹氬湪瑕佸湪鏈鐭殑鏃墮棿鍘諱竴涓嚜宸辨兂鍘葷殑鍦版柟錛佸洜涓鴻崏鍎跨殑瀹跺湪涓涓皬闀囦笂錛屾病鏈夌伀杞︾粡榪囷紝鎵浠ュス鍙兘鍘婚偦榪戠殑鍩庡競鍧愮伀杞︼紙濂藉彲鎬滃晩~錛夈?br> 

Input
杈撳叆鏁版嵁鏈夊緇勶紝姣忕粍鐨勭涓琛屾槸涓変釜鏁存暟T錛孲鍜孌錛岃〃紺烘湁T鏉¤礬錛屽拰鑽夊効瀹剁浉閭?cè)潥勫煄甯傜殑鏈塖涓紝鑽夊効鎯沖幓鐨勫湴鏂規(guī)湁D涓紱
鎺ョ潃鏈塗琛岋紝姣忚鏈変笁涓暣鏁癮錛宐錛宼ime,琛ㄧずa,b鍩庡競涔嬮棿鐨勮濺紼嬫槸time灝忔椂錛?
1=<(a,b)<=1000;a,b 涔嬮棿鍙兘鏈夊鏉¤礬)
鎺ョ潃鐨勭T
+1琛屾湁S涓暟錛岃〃紺哄拰鑽夊効瀹剁浉榪炵殑鍩庡競錛?br>鎺ョ潃鐨勭T+2琛屾湁D涓暟錛岃〃紺鴻崏鍎挎兂鍘誨湴鏂廣?br> 

Output
杈撳嚭鑽夊効鑳藉幓鏌愪釜鍠滄鐨勫煄甯傜殑鏈鐭椂闂淬?br> 

Sample Input
6 2 3
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
 

Sample Output
9

棰樼洰鍒嗘瀽:
        鍒氬紑濮嬪仛鐨勬椂鍊欎篃娌″仛鍒嗘瀽, 鐩存帴灝辨槸鏋氫婦姣忎釜璧風(fēng)偣鍒版瘡涓粓鐐圭殑 鏈鐭窛紱? 鐒跺悗鍙栨渶鐭殑璺?  寰堟樉鐒? TLE.................
榪樻槸鑷繁娌℃湁鎶奃IJKSTRA 綆楁硶鐞嗚В濂?... 鍐嶆鐪嬩簡涓閬嶇畻娉曠殑鎻忚堪鍜屾暟鎹粨鏋勪功涓婄殑 sample鍚?鍙戠幇, 鍏跺疄綆楁硶鎵ц榪囩▼涓?br>宸茬粡鎶婅搗鐐瑰埌鍏朵粬鐐圭殑鏈鐭窛紱誨叏閮ㄧ畻鍑烘潵浜? 鎵浠ュ彧闇瑕?鏋氫婦姣忎釜璧風(fēng)偣灝卞彲浠ヤ簡, 鍏村涔嬩笅, 椹笂淇敼浜嗕唬鐮? Submit! ......
寰?鏉叿, 榪樻槸tle ...... 涓嶆槑鐧戒負(fù)浠涔?....鐪嬬綉涓婂叾浠栦漢鍐欑殑 瑙i鎶ュ憡 , 鍘熸潵寰堝浜轟篃鏄繖鍋氱殑, 鏋氫婦璧峰鐐? 浣嗘槸浠栦滑鐨勫嵈鍙互AC.
铏界劧鏃墮棿涓鑸槸 100MS宸﹀彸. 榪欓噷鎴戜竴鐩村緢綰犵粨, 涓嶆槑鐧藉悓鏍風(fēng)殑綆楁硶涓轟粈涔堟垜鐨勪細(xì)TLE.    
         鍦?AMB 澶х墰鐨勬彁紺轟笅, 涓嶉渶瑕佸叏閮ㄦ灇涓? 鍙鎶婃墍鏈夎搗鐐圭殑璺濈閮借緗垚0灝卞彲浠ヤ簡,  浣嗘槸涓嶇煡閬撲負(fù)浠涔? 榪樻槸涓鐩碩LE.

鏈鍚庣殑鍔炴硶鏄?   璁劇疆涓涓搗鐐規(guī)寚鍚戞墍鏈夎搗鐐? 涔嬮棿鐨勮窛紱昏緗負(fù) 1, 鍚屾牱 璁劇疆涓涓粓鐐規(guī)寚鍚戞墍鏈夌粓鐐? 璺濈鍚屾牱璁劇疆涓?, 鏈鍚?br>浣跨敤 DIJKSTRA 綆楁硶 姹傚嚭璧風(fēng)偣鍒扮粓鐐圭殑鏈鐭窛紱?- 2 灝辮浜? 

浠g爜濡備笅:
#include <iostream>
using namespace std;
const int INF = 0x7FFFFFFF;
int T,S,D,L;
const int MAXN=1005;    //鐐逛釜鏁?/span>
int graph[MAXN][MAXN];
int s[MAXN];
int d[MAXN];
int Dijkstra ( int beg, int end )
{
    
bool hash[MAXN];
    
int path[MAXN];
    
for ( int i = 0; i <= L; ++ i )
    {
          hash[i] 
= true;
          path[i] 
= INF; 
    } 
    hash[beg] 
= false;
    path[beg] 
= 0;
    
while ( beg != end )
    {
           
for ( int i = 0; i <= L; ++ i )
           {
                 
if ( graph[beg][i] != 0 )
                 {
                      
if ( path[i] > path[beg] + graph[beg][i] ) 
                           path[i] 
= path[beg] + graph[beg][i];
                 } 
           } 
           
int min = INF;
           
for ( int i = 0; i <= L; ++ i )
           {
                 
if ( min > path[i] && hash[i] )
                 {
                      min 
= path[i];
                      beg 
= i; 
                 } 
           }
           hash[beg] 
= false;
    }   
    
return path[end];
}

int main ()

    
while ( scanf ( "%d%d%d",&T,&S,&D ) != EOF )
    {
          memset ( graph , 
0 , sizeof ( graph ) );
          L 
= 0;
          
for ( int i = 1; i <= T; ++ i )
          {
                
int r,c,cost;
                scanf ( 
"%d%d%d",&r,&c,&cost );
                
if ( graph[r][c] == 0 )
                     graph[r][c] 
= graph[c][r] = cost ;
                
else
                {
                     
if ( cost < graph[r][c] ) 
                          graph[r][c] 
= graph[c][r] = cost ;
                }
                
if ( L < max ( r,c ) )
                     L 
= max ( r,c );
          } 
          
for ( int i = 0; i != S; ++ i )
          {
               scanf ( 
"%d",&s[i] );
               graph[
0][ s[i] ] = 1
               graph[ s[i] ][
0= 1;     
          }
          L 
++;
          
for ( int i = 0; i != D; ++ i )
          {
               scanf ( 
"%d",&d[i] );
               graph[ d[i] ][ L ] 
= 1;
               graph[ L ][ d[i] ] 
= 1;
          }
          
          cout 
<< Dijkstra ( 0,L ) - 2 << endl;  
    }
    
return 0



欏轟究 0rz 涓嬪ぇ鐗?浠g爜:
#include <iostream>
#define MAX 1005
#define INF 0x7FFF
#define CMP(A,B) (A.d < B.d)
using namespace std;
int d[MAX][MAX];
class HNode {
      
public:
              
int v;
              
int d;
};
class Heap {
public:
        HNode h[MAX 
* 2];
        
int n, p, c;
        Heap() {
                n 
= 0;
        }
        
void inline ins(HNode e) {
                
for (p = ++n; p > 1 && CMP(e,h[p>>1]); h[p] = h[p>>1], p >>= 1)
                        ;
                h[p] 
= e;
        }
        
int inline pop(HNode &e) {
                
if (!n)
                        
return 0;
                
for (e = h[p = 1], c = 2; c < n
                                
&& CMP(h[c += (CMP(h[c + 1],h[c]) && c < n - 1)], h[n]);
                                h[p] 
= h[c], p = c, c <<= 1)
                        ;
                h[p] 
= h[n--];
                
return 1;
        }
};
int Dijkstra(int A, int B, int N) {
        
int dist[MAX];
        
int mask[MAX];
        
int Tmp;
        Heap h;
        HNode e, ne;

        
for (int i = 0; i < N; i++) {
                dist[i] 
= INF;
                mask[i] 
= 0;
        }
        dist[e.v 
= A] = (e.d = 0);
        h.ins(e);
        
while (h.pop(e)) {
                
if (!mask[e.v]) {
                        mask[e.v] 
= 1;
                        
for (int i = 0; i < N; i++) {
                                
if (!mask[i] && (Tmp = e.d + d[e.v][i])
                                                
< dist[i]) {
                                        dist[ne.v 
= i] = (ne.d = Tmp);
                                        h.ins(ne);
                                }
                        }
                }
        }
        
return dist[B];
}
int main() {
        
int T, S, D, M;
        
int st, en, tm;
        
while (scanf("%d %d %d"&T, &S, &D)!=EOF) {
                M 
= 0;
                
for (int i = 0; i < MAX; i++)
                        
for (int j = 0; j < MAX; j++)
                                d[i][j] 
= INF;
                
for (int i = 0; i < T; i++) {
                        scanf(
"%d %d %d"&st, &en, &tm);
                        
if (tm < d[st][en]) {
                                d[st][en] 
= d[en][st] = tm;
                        }

                        M 
= st> M ? st : M;
                        M 
= en> M ? en : M;
                }
                M 
= M + 1;
                
for (int i = 0; i < S; i++) {
                        scanf(
"%d"&st);
                        d[
0][st] = 1;
                        d[st][
0= 1;
                }

                
for (int i = 0; i < D; i++) {
                        scanf(
"%d"&en);
                        d[M][en] 
= 1;
                        d[en][M] 
= 1;
                }
                cout
<<Dijkstra(0, M, M+1)-2<<endl;
        }
        
return 0;
}



MiYu 2010-08-15 11:31 鍙戣〃璇勮
]]>
HDOJ 2544 HDU 2544 鏈鐭礬 ACM 2544 IN HDU http://www.shnenglu.com/MiYu/archive/2010/08/14/123447.htmlMiYuMiYuSat, 14 Aug 2010 10:28:00 GMThttp://www.shnenglu.com/MiYu/archive/2010/08/14/123447.htmlhttp://www.shnenglu.com/MiYu/comments/123447.htmlhttp://www.shnenglu.com/MiYu/archive/2010/08/14/123447.html#Feedback0http://www.shnenglu.com/MiYu/comments/commentRss/123447.htmlhttp://www.shnenglu.com/MiYu/services/trackbacks/123447.htmlMiYu鍘熷垱, 杞笘璇鋒敞鏄?: 杞澆鑷?______________鐧界櫧銇眿

棰樼洰鍦板潃:
         http://acm.hdu.edu.cn/showproblem.php?pid=2544
棰樼洰鎻忚堪:
鏈鐭礬
Time Limit: 
5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 
3844    Accepted Submission(s): 1628


Problem Description
鍦ㄦ瘡騫寸殑鏍¤禌閲岋紝鎵鏈夎繘鍏ュ喅璧涚殑鍚屽閮戒細(xì)鑾峰緱涓浠跺緢婕備寒鐨則
-shirt銆備絾鏄瘡褰撴垜浠殑宸ヤ綔浜哄憳鎶婁笂鐧句歡鐨勮。鏈嶄粠鍟嗗簵榪愬洖鍒拌禌鍦虹殑鏃跺欙紝鍗存槸闈炲父绱殑錛佹墍浠ョ幇鍦ㄤ粬浠兂瑕佸鎵炬渶鐭殑浠庡晢搴楀埌璧涘満鐨勮礬綰匡紝浣犲彲浠ュ府鍔╀粬浠悧錛?br>

 

Input
杈撳叆鍖呮嫭澶氱粍鏁版嵁銆傛瘡緇勬暟鎹涓琛屾槸涓や釜鏁存暟N銆丮錛圢
<=100錛孧<=10000錛夛紝N琛ㄧず鎴愰兘鐨勫ぇ琛椾笂鏈夊嚑涓礬鍙o紝鏍囧彿涓?鐨勮礬鍙f槸鍟嗗簵鎵鍦ㄥ湴錛屾爣鍙蜂負(fù)N鐨勮礬鍙f槸璧涘満鎵鍦ㄥ湴錛孧鍒欒〃紺哄湪鎴愰兘鏈夊嚑鏉¤礬銆侼=M=0琛ㄧず杈撳叆緇撴潫銆傛帴涓嬫潵M琛岋紝姣忚鍖呮嫭3涓暣鏁癆錛孊錛孋錛?/span>1<=A,B<=N,1<=C<=1000錛?琛ㄧず鍦ㄨ礬鍙涓庤礬鍙涔嬮棿鏈変竴鏉¤礬錛屾垜浠殑宸ヤ綔浜哄憳闇瑕丆鍒嗛挓鐨勬椂闂磋蛋榪囪繖鏉¤礬銆?br>杈撳叆淇濊瘉鑷沖皯瀛樺湪1鏉″晢搴楀埌璧涘満鐨勮礬綰褲?br>
 

Output
瀵逛簬姣忕粍杈撳叆錛岃緭鍑轟竴琛岋紝琛ㄧず宸ヤ綔浜哄憳浠庡晢搴楄蛋鍒拌禌鍦虹殑鏈鐭椂闂?br> 

Sample Input
2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
 

Sample Output
3
2

棰樼洰鍒嗘瀽:
鏈鐭礬鐨勫叆闂ㄩ鐩? 鎴戜篃鏄垰鍒氭帴瑙? 寮濮嬩竴鐩存病鐪嬫槑鐧藉埌搴曟庝箞鍥炰簨, 鐫′簡涓瑙夐啋鏉? 鎶婃暟鎹粨鏋勪功緲誨嚭鏉ュ涔?fàn)浜嗕竴嬈?Dijkstra  緇堜簬鏄庣櫧浜?

Dijkstra綆楁硶鐨勫熀鏈濊礬鏄細(xì)
         鍋囪姣忎釜鐐歸兘鏈変竴瀵規(guī)爣鍙?(dj, pj)錛屽叾涓璬j鏄粠璧鋒簮鐐箂鍒扮偣j鐨勬渶鐭礬寰勭殑闀垮害 (浠庨《鐐瑰埌鍏舵湰韜殑鏈鐭礬寰勬槸闆惰礬(娌℃湁寮х殑璺?錛屽叾闀垮害絳変簬闆?錛?br>
pj鍒欐槸浠巗鍒癹鐨勬渶鐭礬寰勪腑j鐐圭殑鍓嶄竴鐐廣傛眰瑙d粠璧鋒簮鐐箂鍒扮偣j鐨勬渶鐭礬寰勭畻娉曠殑鍩烘湰榪囩▼濡備笅錛?br>
銆銆1) 鍒濆鍖栥傝搗婧愮偣璁劇疆涓猴細(xì)鈶?ds=0, ps涓虹┖;鈶?鎵鏈夊叾浠栫偣: di=∞, pi=?;鈶?鏍囪璧鋒簮鐐箂錛岃k=s,鍏朵粬鎵鏈夌偣璁句負(fù)鏈爣璁扮殑銆?br>
銆銆2) 媯(gè)楠屼粠鎵鏈夊凡鏍囪鐨勭偣k鍒板叾鐩存帴榪炴帴鐨勬湭鏍囪鐨勭偣j鐨勮窛紱伙紝騫惰緗細(xì)


dj=min錛籨j, dk+lkj錛?br>


寮忎腑錛宭kj鏄粠鐐筴鍒癹鐨勭洿鎺ヨ繛鎺ヨ窛紱匯?br>
銆銆3) 閫夊彇涓嬩竴涓偣銆備粠鎵鏈夋湭鏍囪鐨勭粨鐐逛腑錛岄夊彇dj 涓渶灝忕殑涓涓猧錛?br>


di=min錛籨j, 鎵鏈夋湭鏍囪鐨勭偣j錛?br>


鐐筰灝辮閫変負(fù)鏈鐭礬寰勪腑鐨勪竴鐐癸紝騫惰涓哄凡鏍囪鐨勩?br>
銆銆4) 鎵懼埌鐐筰鐨勫墠涓鐐廣備粠宸叉爣璁扮殑鐐逛腑鎵懼埌鐩存帴榪炴帴鍒扮偣i鐨勭偣j*錛屼綔涓哄墠涓鐐?璁劇疆錛歩=j*

銆銆5) 鏍囪鐐筰銆傚鏋滄墍鏈夌偣宸叉爣璁幫紝鍒欑畻娉曞畬鍏ㄦ帹鍑猴紝鍚﹀垯錛岃k=i錛岃漿鍒?) 鍐嶇戶緇?/p>


浠g爜濡備笅:
#include <iostream>
using namespace std;
const int INF = 0x7FFFFFFF;
const int MAX = 105;
int graph[MAX][MAX];
int N,M;
int Dijkstra ( int beg, int end )
{
    
bool hash[N+1];
    
int path[N+1];
    
for ( int i = 0; i <= N; ++ i )
    {
          hash[i] 
= true;
          path[i] 
= INF; 
    } 
    hash[beg] 
= false;
    path[beg] 
= 0;
    
while ( beg != end )
    {
           
for ( int i = 1; i <= N; ++ i )
           {
                 
if ( graph[beg][i] )
                 {
                      
if ( path[i] > path[beg] + graph[beg][i] ) 
                           path[i] 
= path[beg] + graph[beg][i];
                 } 
           } 
           
int min = INF;
           
for ( int i = 1; i <= N; ++ i )
           {
                 
if ( min > path[i] && hash[i] )
                 {
                      min 
= path[i];
                      beg 
= i; 
                 } 
           }
           hash[beg] 
= false;
    }
    
return path[end];
}

int main ()

    
while ( scanf ( "%d%d",&N,&M ) , N + M )
    {
          memset ( graph , 
0 , sizeof ( graph ) );
          
for ( int i = 1; i <= M; ++ i )
          {
                
int r,c,cost;
                scanf ( 
"%d%d%d",&r,&c,&cost );
                
if ( graph[r][c] == 0 )
                     graph[r][c] 
= graph[c][r] = cost ;
                
else
                {
                     
if ( cost < graph[r][c] ) 
                          graph[r][c] 
= graph[c][r] = cost ;
                }
          } 
          cout 
<< Dijkstra ( 1,N ) << endl;;
    }
    
return 0



MiYu 2010-08-14 18:28 鍙戣〃璇勮
]]>
2021久久精品国产99国产精品| 青青久久精品国产免费看| 久久午夜电影网| 色综合久久中文字幕无码| 狠狠色婷婷久久一区二区| 国产A三级久久精品| 久久精品国产精品国产精品污| 久久综合久久伊人| 四虎亚洲国产成人久久精品| 久久人人爽人人爽人人片AV不 | 久久er99热精品一区二区| 亚洲中文字幕无码久久综合网| 久久久WWW成人免费毛片| 久久亚洲精品无码播放| 国内精品人妻无码久久久影院| 91亚洲国产成人久久精品网址| 久久久精品视频免费观看| 久久精品国产99国产精品亚洲 | 国产视频久久| 久久影视综合亚洲| 国产精品青草久久久久婷婷| 人妻无码αv中文字幕久久琪琪布| 久久99国产亚洲高清观看首页| 麻豆一区二区99久久久久| 手机看片久久高清国产日韩| 亚洲一区二区三区日本久久九| 亚洲一区中文字幕久久| 99久久婷婷国产综合亚洲| 久久久久久精品无码人妻| 中文字幕精品无码久久久久久3D日动漫| 国产Av激情久久无码天堂| 国产精品久久久久久久久久影院| 久久精品国产亚洲AV蜜臀色欲| 久久精品国产亚洲AV蜜臀色欲| 亚洲AV无码一区东京热久久| 欧美激情精品久久久久久| 国产综合成人久久大片91| 一本色道久久综合狠狠躁| 香蕉久久久久久狠狠色| 国产精品久久久久久久久免费| 久久精品国产清自在天天线|