锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区二区欧美,国产精品h在线观看,欧美精品一区二http://www.shnenglu.com/apple365/铚楃墰zh-cnSun, 14 Dec 2025 03:14:57 GMTSun, 14 Dec 2025 03:14:57 GMT60鍏充簬http://www.shnenglu.com/apple365/archive/2008/11/29/68200.html铚楃墰铚楃墰Sat, 29 Nov 2008 15:42:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/29/68200.htmlhttp://www.shnenglu.com/apple365/comments/68200.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/29/68200.html#Feedback1http://www.shnenglu.com/apple365/comments/commentRss/68200.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68200.html涓    ACM      濡傛灉璇存妸ACM姣斾綔涓浣嶆亱浜猴紝閭d箞鎴戜滑灝辨槸鍓嶄笘浜旂櫨嬈$殑鍥炵湼錛屾墠鎹㈡潵浠婄敓鐨勪竴嬈℃摝鑲╄岃繃浜嗐?
     鏆戝亣錛屽幓浜嗚稛騫垮窞瀹炰範錛屽洖鏉ュ悗灝卞埌瀛︽牎寮濮嬬渷璧涚殑闆嗚銆備粠鍏湀鍗佹棩鍙峰埌鐜板湪錛屾垜鍦ㄤ笉鍒嗙櫧澶╅粦澶滅殑鏁查錛屽綆楁硶銆傘婄畻娉曞璁恒嬪凡琚垜鍊熶簡蹇竴騫翠簡銆?
     涓璺蛋鏉ワ紝鎰熸叏棰囧錛屾湁蹇冮吀錛屼篃鏈夊揩涔愩?/span>
     鏈夋椂浼氬洜涓烘彁浜や竴涓鐩紝浠庢棭涓婁竴鐩碬A鍒頒笅鍗堬紝楗夸簡錛屽氨閭f牱鎸虹潃錛屼笉AC涓嶇艦浼戙?
     鐪佽禌涔嬪墠錛屽鏍¤繕鏈夊嚑涓槦鍛樻湁鐨勬椂鍊欎氦嫻佷竴涓嬶紝鑰岀幇鍦ㄥ氨鍙湁鎴戠殑浼欎即涔熷彧鏈夌櫨搴﹀拰璋鋒瓕銆?
     鐪佽禌錛屾棭宸查瑙佺殑緇撴灉錛屾垜瑕佺殑鍙槸鐨勮繘姝ャ?
     瑙佽瘑榪囧緢澶氱墰浜猴紝瀛︿範浜嗗緢澶氱殑綆楁硶錛屼篃鏁茶繃涓婁竾琛岀殑浠g爜銆?
     鍦ㄦ箹澶х殑緗戠珯涓婃暡浜?50閬撻鐩紝鍚庢潵灝辮漿鍖楀ぇ鐨凱OJ浜嗐傛垜鐨勬墦綆楁槸鏁插畬榪欎釜瀛︽湡錛岃嚦灝戣鏁?00浠ヤ笂錛屾尋榪?000銆?
     鍦ㄧ畻娉曠殑嫻鋒磱閲岋紝鎴戣繖灝忓皬鐨勮湕鐗涳紝涔熷彧鏈変竴澶╀竴澶╃殑鍔姏寰涓婄埇錛屼笉鐭ラ亾浣曟椂鎵嶈兘鐪嬪埌閭d簺鐏跨儌鐨勯槼鍏夈?
     涔熻錛岄槼鍏夋棭宸叉磼钀藉湪榪囩▼閲屼簡銆?
     鏈夋椂鍊欎細鎯籌紝濡傛灉鎴戞棭涓鐐規帴瑙CM,浠婂ぉ浼氫笉浼氱墰浠ユ潵鍛紵濡傛灉鎴戝湪涓鎵閲嶇偣澶у錛屾垜鐨凙CM鐢熸動鍙堜細鎬庢牱鍛紵濡傛灉……銆?
     鍙槸鐢熸椿娌℃湁濡傛灉錛屽垰寮濮嬬浉鎭嬶紝鎴戝氨瑕佹瘯涓氫簡銆?
     鏈変簺閬楁喚錛屼絾涔熶笉鎮旓紝鍦ㄦ垜鏈夌敓涔嬪勾錛屼負涔嬪鏂楄繃銆?


浜?nbsp; 鐢熸椿
      11鏈堬紝鏈変簺浜虹殑褰卞瓙寮濮嬫ā緋娿傚氨榪欐牱鍚э紝璁╃敓媧葷殑嫻佹按鎶婇偅浜涘線浜嬮兘甯﹁蛋銆?
     寰堝皯鍘諱笂璇撅紝浼拌姣忚妭璇懼嚭鍕ょ殑鍚屽涓嶄細瓚呰繃涓や綅鏁般?
     浣嗘垜寰堢弽鎯滆繖孌墊渶鍚庣殑瀛︽牎鐢熸椿錛屽彲浠ヨ垝鏈嶇殑鐫¤錛屽彲浠ヨ嚜鐢辯殑鏁查錛屽彲浠ヨ交鏉劇殑鍐欏瓧錛屽彲浠ヤ笉綆¢偅浜涘叧浜庣粡嫻庡嵄鏈鴻屽甫鏉ョ殑灝變笟鍗辨満錛屽彲浠ユ斁鑲嗙殑鍍忎釜瀛╁瓙銆?
     鑷沖皯鍦ㄦ病鏈夋瘯涓氫箣鍓嶆垜榪樻槸涓涓鐢燂紝浣嗗緢蹇氨涓嶆槸浜嗐?
     璧板叆紺句細錛屽伐浣滐紝鎴戝氨瑕佹壙鎷呰搗涓浠借矗浠諱簡銆備翰鐖辯殑鐖哥埜濡堝錛屼負浜嗘垜鑻︿簡澶у崐杈堝瓙銆傛垜瑕佸姫鍔涙專閽憋紝璁╂垜浠殑鏃ュ瓙榪囩殑濂界偣銆?
     鏈嬪弸浠紝榪欐鑱旂郴灝戜簡錛屽叾瀹炴垜涔熶笉鎯寵繖鏍楓?
     澶╁喎浜嗭紝鏁村ぉ涓涓漢瀵硅繖鐢佃剳錛屾湁鐐規兂鍥炲浜嗐?
      鐢熸椿寰堢畝鍗曪紝姣忓ぉ鐫″埌涔濈偣璧峰簥錛屽繖媧諱竴涓嬪崼鐢燂紝灝卞紑鐢佃剳錛屽湪鍖楀ぇ鐨勯嫻烽噷閬ㄦ父浜嗭紝鏃犺竟鏃犻檯銆?
     涓崍錛屽寙蹇欑殑鍚冧釜蹇銆傛場鏉挅鍟★紝鎵撳紑紿楀笜錛屾檼浼氬効澶槼錛岀戶緇仛棰樸?
     鏅氫笂鐨勬椂鍊欙紝璺戝埌瀛︽牎椋熷爞鍚冮】楗傜劧鍚庡湪澶滃箷涓嬶紝涓涓漢娓歌崱銆?
     鎴戝緢鍠滄鍘繪搷鍦猴紝閭d簺絀烘椃涓庡瘋瀵ワ紝鏄媯嬈㈣繃鍚庝竴涓漢鎮蹭激銆傚惉鐫騫挎挱閲屻婃棆鏈ㄣ嬶紝鐜嬭彶鐨勭┖鐏典笌綰補銆?
     鏋佺洰榪滅満錛屽寳鏂圭殑澶╃┖鏈変袱棰楅棯浜殑鏄熸槦錛屼笉鐭ラ亾浠栦滑闅斾簡鏈夊榪滐紝鏈夋病鏈夎璇佽繃鎵璋撶殑姘告亽銆?
     鍥炴潵鍚庯紝緇х畫鏁查榪囧崍澶溿?

涓?nbsp; 紲炲
     涓涓漢鐨勬椂鍊欙紝鎬濇兂浼氬緢媧昏穬錛屼篃鎯寵繃寰堝鐨勯棶棰樸?
     涓轟粈涔堟垜浼氭潵鍒拌繖涓槦鐞冧笂錛屽茍涓旀槸榪熶笉鏉ワ紝鏅氫笉鏉ワ紝鍋忓亸鍦ㄨ繖涓椂鍊欐潵浜嗗憿錛?
     鍦ㄦ垜娌℃潵鍒拌繖涓笘鐣屾潵涔嬪墠鐨勯偅涔堝騫達紝涓栫晫鏄釜浠涔堟牱瀛愬憿錛熷巻鍙蹭笂閭d箞澶氱殑浜猴紝浠栦滑閮芥浜嗭紝鍒板簳浠栦滑鏈夎繃鎬庢牱鐨勭敓媧伙紵 
     鏄粈涔堝姏閲忎駭鐢熶簡鐢熷懡錛熸庝箞灝辨湁浜嗘垜錛?澶濂囦簡錛?wbr>
     鏈潵浼氬彉鎴愪粈涔堟牱瀛愬憿錛熶竴鐧懼勾錛屼竴鍗冨勾錛屽埌鏃跺欐垜浠兘涓嶅湪浜嗐?
     涓鎯沖埌鎴戜滑閮戒細姝伙紝灝變細寰堟偛浼わ紝閭d簺鏃犲彲濂堜綍鐨勬偛浼ゃ?
     浠ュ墠浠庢潵鎯寵繃鐨勯棶棰橈紝闅忕潃鐖風埛濂跺ザ鐨勫幓涓栵紝涔呬箙鐨勪細鍦ㄥ績閲岀紶緇曠潃銆?
     鎮蹭激錛屾槸鍥犱負瀹蟲曠潃澶卞幓銆?
     涔熻錛屾椿鐫灝變粎浠呭彧鏄負浜嗘椿鐫鑰屾椿鐫錛屼竴鍦烘父鎴忎竴鍦烘ⅵ錛岀閭d箞澶氬共鍢涘憿錛?nbsp;
     鏈夋ⅵ灝卞仛錛屾湁閰掑氨閱夛紝鐥涚棝蹇揩鐨勫湪榪欎釜涓栫晫璧頒竴閬惂銆?wbr>

鍥?nbsp; 鎵撶畻
     鎵撶畻鎵句釜浜猴紝濂藉ソ鐨勮皥涓鍦烘亱鐖便?
     濡堝鐨勭敓鏃ュ揩鍒頒簡錛屽噯澶囩粰濂硅佷漢瀹墮佷竴浠界ぜ鐗┿?
     鎵撶畻鐫鍐嶆暡涓や釜鏈堥錛屽姫鍔涚殑鍚戠墰鐪嬮綈錛屼笉瑕侀偅涔堣彍灝辮銆?
     鑰佸緇撳浜嗭紝鎵撶畻鍒板寳浜幓鐪嬬湅浠栦滑銆?
     鎵撶畻鐫鏄庡勾姣曚笟瀹炰範錛屾瘯涓氳璁★紝鎵懼伐浣溿?
     鎵撶畻涓嶈鍘繪墦鐤插姵鎴樻湳浜嗭紝寰楀ソ濂界殑閿葷偧涓涓嬭韓浣撱?
     鎵撶畻璋冩暣濂界敓鐗╅挓錛屽崄浜岀偣浠ュ墠涓瀹氫笂搴婄潯瑙夈?
     鎵撶畻鐫閫変釜闃沖厜鐏跨儌鐨勬棩瀛愶紝濂藉ソ鐨勫嚭鍘昏蛋璧扮帺鐜┿傝繖浜涘ぉ澶╂皵寰堝ソ錛屼絾涓鐩磋垗涓嶅緱錛屾椂闂村緢涓嶅鐢ㄣ?
     鎵撶畻濂藉ソ鐨勬暡棰橈紝濂藉ソ鐨勫涔狅紝濂藉ソ鐨勭敓媧伙紝濂藉ソ鐨勫緟鐢熷懡涓亣鍒扮殑姣忎竴涓漢銆?
     鐜板湪鎵撶畻鐫椹笂鍏崇數鑴戜笂搴婄潯瑙夈?wbr>


铚楃墰 2008-11-29 23:42 鍙戣〃璇勮
]]>
POJ 1083 C++ 錛堟按棰橈級http://www.shnenglu.com/apple365/archive/2008/11/29/68192.html铚楃墰铚楃墰Sat, 29 Nov 2008 13:33:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/29/68192.htmlhttp://www.shnenglu.com/apple365/comments/68192.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/29/68192.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/68192.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68192.html
//鍏抽敭鏄湪浜庡尯闂寸瘡璁$殑鏃跺欎竴涓伓鏁板熀鏁扮殑闂
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{ int test,n,i,j;
  int s[200],t[200],used[200];
  freopen("in.txt","r",stdin);
  freopen("out.txt","w",stdout);
  scanf("%d",&test);
  while(test--)
       { scanf("%d",&n);
         memset(used,0,sizeof(used));
         for(i=0;i<n;i++)
              scanf("%d%d",&s[i],&t[i]);
         for(i=0;i<n;i++)
              {  if(s[i]>t[i])
                   swap(s[i],t[i]);
                 if(s[i]%2==0)
                    s[i]--;
                  s[i]=s[i]/2;
                 if(t[i]%2==0)
                   t[i]--;
                 t[i]=t[i]/2;
               for(j=s[i];j<=t[i];j++)
                     used[j]++;    
              }
           sort(used,used+200);              
           printf("%d\n",used[199]*10);
   }
return 0;                
}


铚楃墰 2008-11-29 21:33 鍙戣〃璇勮
]]>
POJ 3041 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/29/68163.html铚楃墰铚楃墰Sat, 29 Nov 2008 07:37:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/29/68163.htmlhttp://www.shnenglu.com/apple365/comments/68163.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/29/68163.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/68163.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68163.html//鏈榪戜笓鐢‵ord_Fulkerson 鍜宧ungary姘村埌鎵嬭蔣
//鏈灝忓壊瀹氱悊鏄竴涓簩鍒嗗浘涓緢閲嶈鐨勫畾鐞嗭紞錛嶏紞涓涓簩鍒嗗浘涓殑鏈澶у尮閰嶆暟絳変簬榪欎釜鍥句腑鐨勬渶灝忕偣瑕嗙洊鏁般?wbr>
//鏈灝忕偣瑕嗙洊錛氬亣濡傞変簡涓涓偣灝辯浉褰撲簬瑕嗙洊浜嗕互瀹冧負绔偣鐨勬墍鏈夎竟錛屼綘闇瑕侀夋嫨鏈灝戠殑鐐規潵瑕嗙洊鎵鏈夌殑杈?
#include<iostream>
using namespace std;
int n,m,res;
int l[500],r[500],map[500][500],used[500];
bool path(int u)
{int v;
for(v=0;v<n;v++)
     if(map[u][v] && !used[v])
       {used[v]=1;
        if(r[v]==-1 || path(r[v]))
           {  l[u]=v;
              r[v]=u;
              return true;
           }
       }
   return false;        
}
void solve()
{ int i;
  memset(l,-1,sizeof(l));
  memset(r,-1,sizeof(r));
  for(i=0;i<n;i++)
       if(l[i]==-1)
           {  memset(used,0,sizeof(used));
              if(path(i))
                  res++;
           }  

}
int main()
{ int i,a,b;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
while((scanf("%d%d",&n,&m))!=EOF)
       { memset(map,0,sizeof(map));
         for(i=0;i<m;i++)
             { scanf("%d%d",&a,&b);
               map[a-1][b-1]=1;
              }
           res=0; 
           solve();
           cout<<res<<endl;            
         }
   return 0;      
}              

铚楃墰 2008-11-29 15:37 鍙戣〃璇勮
]]>
POJ 1496 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/29/68152.html铚楃墰铚楃墰Sat, 29 Nov 2008 05:08:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/29/68152.htmlhttp://www.shnenglu.com/apple365/comments/68152.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/29/68152.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/68152.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68152.html//鍖堢墮鍒╃畻娉曞疄鐜頒簩鍒嗗浘鐨勬渶澶у尮閰嶏紝杈冩渶澶ф祦瀹炵幇鏉ョ殑綆鍗曚簺
//鐗圭偣涓嶉渶瑕佸緩妯★紝鍘熺悊榪樻槸鏈寸礌鏈澶ф祦鍘熺悊錛屽鎵懼騫胯礬寰勭敤DFS,濡傛壘鍒頒竴鏉″騫胯礬寰勶紝娌胯礬杈瑰彇鍙?wbr>

#include<iostream>
using namespace std;
int n,m,res;
int l[300],r[300],map[300][300],used[300];

bool path(int u)
{int v;
for(v=0;v<m;v++)
     if(map[u][v] && !used[v])
       {used[v]=1;
        if(r[v]==-1 || path(r[v]))
           {  l[u]=v;
              r[v]=u;
              return true;
           }
       }
   return false;        
}

void solve()
{ int i;
  memset(l,-1,sizeof(l));
  memset(r,-1,sizeof(r));
  for(i=0;i<n;i++)
       if(l[i]==-1)
           {  memset(used,0,sizeof(used));
              if(path(i))
                 res++;
            }  

}

int main()
{ int Case,i,j,k,temp;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
  scanf("%d",&Case);
  while(Case--)
       { memset(map,0,sizeof(map));
         scanf("%d%d",&n,&m);
         for(i=0;i<n;i++)
             { scanf("%d",&k);
               for(j=0;j<k;j++)
                   {scanf("%d",&temp);
                    map[i][temp-1]=1;
                   }
               }
           res=0;    
           solve();
           if(res==n)
              printf("YES\n");
           else
             printf("NO\n");            
         }
   return 0;      
}              




浠涔堟槸浜屽垎鍥撅紝浠涔堟槸浜屽垎鍥劇殑鏈澶у尮閰嶏紝榪欎簺瀹氫箟鎴戝氨涓嶈浜嗭紝緗戜笂闅忎究閮芥壘寰楀埌銆備簩鍒嗗浘鐨勬渶澶у尮閰嶆湁涓ょ姹傛硶錛岀涓縐嶆槸鏈澶ф祦錛堟垜鍦ㄦ鍋囪璇昏呭凡鏈夌綉緇滄祦鐨勭煡璇嗭級錛涚浜岀灝辨槸鎴戠幇鍦ㄨ璁茬殑鍖堢墮鍒╃畻娉曘傝繖涓畻娉曡鐧戒簡灝辨槸鏈澶ф祦鐨勭畻娉曪紝浣嗘槸瀹冭窡鎹簩鍒嗗浘鍖歸厤榪欎釜闂鐨勭壒鐐癸紝鎶婃渶澶ф祦綆楁硶鍋氫簡綆鍖栵紝鎻愰珮浜嗘晥鐜囥傚寛鐗欏埄綆楁硶鍏跺疄寰堢畝鍗曪紝浣嗘槸緗戜笂鎼滀笉鍒頒粈涔堣寰楁竻妤氱殑鏂囩珷銆傛墍浠ユ垜鍐沖畾瑕佸啓涓涓嬨?br>鏈澶ф祦綆楁硶鐨勬牳蹇冮棶棰樺氨鏄壘澧炲箍璺緞錛坅ugment path錛夈傚寛鐗欏埄綆楁硶涔熶笉渚嬪錛屽畠鐨勫熀鏈ā寮忓氨鏄細

鍒濆鏃舵渶澶у尮閰嶄負絀?br>while 鎵懼緱鍒板騫胯礬寰?br>    do 鎶婂騫胯礬寰勫姞鍏ュ埌鏈澶у尮閰嶄腑鍘?wbr>
鍙鍜屾渶澶ф祦綆楁硶鏄竴鏍風殑銆備絾鏄繖閲岀殑澧炲箍璺緞灝辨湁瀹冧竴瀹氱殑鐗規畩鎬э紝涓嬮潰鎴戞潵鍒嗘瀽涓涓嬨?br>錛堟敞錛氬寛鐗欏埄綆楁硶铏界劧鏍規湰涓婃槸鏈澶ф祦綆楁硶錛屼絾鏄畠涓嶉渶瑕佸緩緗戠粶妯″瀷錛屾墍浠ュ浘涓笉鍐嶉渶瑕佹簮鐐瑰拰姹囩偣錛屼粎浠呮槸涓涓簩鍒嗗浘銆傛瘡鏉¤竟涔熶笉闇瑕佹湁鏂瑰悜銆傦級


鍥? 鍥?

鍥?鏄垜緇欏嚭鐨勪簩鍒嗗浘涓殑涓涓尮閰嶏細錛?錛?錛藉拰錛?錛?錛姐傚浘2灝辨槸鍦ㄨ繖涓尮閰嶇殑鍩虹涓婃壘鍒扮殑涓鏉″騫胯礬寰勶細3->6->2->5->1->4銆?wbr>鎴戜滑鍊熺敱瀹冩潵鎻忚堪涓涓嬩簩鍒嗗浘涓殑澧炲箍璺緞鐨勬ц川錛?br>
(1)鏈夊鏁版潯杈廣?br>(2)璧風偣鍦ㄤ簩鍒嗗浘鐨勫乏鍗婅竟錛岀粓鐐瑰湪鍙沖崐杈廣?br>(3)璺緞涓婄殑鐐逛竴瀹氭槸涓涓湪宸﹀崐杈癸紝涓涓湪鍙沖崐杈癸紝浜ゆ浛鍑虹幇銆傦紙鍏跺疄浜屽垎鍥劇殑鎬ц川灝卞喅瀹氫簡榪欎竴鐐癸紝鍥犱負浜屽垎鍥懼悓涓杈圭殑鐐逛箣闂存病鏈夎竟鐩歌繛錛屼笉瑕佸繕璁板摝銆傦級
(4)鏁存潯璺緞涓婃病鏈夐噸澶嶇殑鐐廣?br>(5)璧風偣鍜岀粓鐐歸兘鏄洰鍓嶈繕娌℃湁閰嶅鐨勭偣錛岃屽叾瀹冩墍鏈夌偣閮芥槸宸茬粡閰嶅ソ瀵圭殑銆傦紙濡傚浘1銆佸浘2鎵紺猴紝錛?錛?錛藉拰錛?錛?錛藉湪鍥?涓槸涓ゅ宸茬粡閰嶅ソ瀵圭殑鐐癸紱鑰岃搗鐐?鍜岀粓鐐?鐩墠榪樻病鏈変笌鍏跺畠鐐歸厤瀵廣傦級
(6)璺緞涓婄殑鎵鏈夌濂囨暟鏉¤竟閮戒笉鍦ㄥ師鍖歸厤涓紝鎵鏈夌鍋舵暟鏉¤竟閮藉嚭鐜板湪鍘熷尮閰嶄腑銆傦紙濡傚浘1銆佸浘2鎵紺猴紝鍘熸湁鐨勫尮閰嶆槸錛?錛?錛藉拰錛?錛?錛斤紝榪欎袱鏉¢厤鍖圭殑杈瑰湪鍥?緇欏嚭鐨勫騫胯礬寰勪腑鍒嗚竟鏄2鍜岀4鏉¤竟銆傝屽騫胯礬寰勭殑絎?銆?銆?鏉¤竟閮芥病鏈夊嚭鐜板湪鍥?緇欏嚭鐨勫尮閰嶄腑銆傦級
(7)鏈鍚庯紝涔熸槸鏈閲嶈鐨勪竴鏉★紝鎶婂騫胯礬寰勪笂鐨勬墍鏈夌濂囨暟鏉¤竟鍔犲叆鍒板師鍖歸厤涓幓錛屽茍鎶婂騫胯礬寰勪腑鐨勬墍鏈夌鍋舵暟鏉¤竟浠庡師鍖歸厤涓垹闄わ紙榪欎釜鎿嶄綔縐頒負澧炲箍璺緞鐨?wbr>鍙栧弽錛夛紝鍒欐柊鐨勫尮閰嶆暟灝辨瘮鍘熷尮閰嶆暟澧炲姞浜?涓傦紙濡傚浘2鎵紺猴紝鏂扮殑鍖歸厤灝辨槸鎵鏈夎摑鑹茬殑杈癸紝鑰屾墍鏈夌孩鑹茬殑杈瑰垯浠庡師鍖歸厤涓垹闄ゃ傚垯鏂扮殑鍖歸厤鏁頒負3銆傦級

涓嶉毦鎯抽氾紝鍦ㄦ渶鍒濆鏃訛紝榪樻病鏈変換浣曞尮閰嶆椂錛屽浘1涓殑涓ゆ潯鐏拌壊鐨勮竟鏈韓涔熸槸澧炲箍璺緞銆傚洜姝ゅ湪榪欏紶浜屽垎鍥句腑瀵繪壘鏈澶ч厤鍖圭殑榪囩▼鍙兘濡備笅錛?br>
(1)鎵懼埌澧炲箍璺緞1->5錛屾妸瀹冨彇鍙嶏紝鍒欏尮閰嶆暟澧炲姞鍒?銆?br>(2)鎵懼埌澧炲箍璺緞2->6錛屾妸瀹冨彇鍙嶏紝鍒欏尮閰嶆暟澧炲姞鍒?銆?br>(3)鎵懼埌澧炲箍璺緞3->6->2->5->1->4錛屾妸瀹冨彇鍙嶏紝鍒欏尮閰嶆暟澧炲姞鍒?銆?br>(4)鍐嶄篃鎵句笉鍒板騫胯礬寰勶紝緇撴潫銆?br>
褰撶劧錛岃繖鍙槸涓縐嶅彲鑳界殑嫻佺▼銆備篃鍙兘鏈夊埆鐨勬壘澧炲箍璺緞鐨勯『搴忥紝鎴栬呮壘鍒頒笉鍚岀殑澧炲箍璺緞錛屾渶緇堢殑鍖歸厤鏂規涔熷彲鑳戒笉涓鏍楓備絾鏄渶澶у尮閰嶆暟涓瀹氶兘鏄浉鍚岀殑銆?br>
瀵逛簬澧炲箍璺緞榪樺彲浠ョ敤涓涓掑綊鐨勬柟娉曟潵鎻忚堪銆傝繖涓弿榪頒笉涓瀹氭渶鍑嗙‘錛屼絾鏄畠鎻ず浜嗗鎵懼騫胯礬寰勭殑涓鑸柟娉曪細
“浠庣偣A鍑哄彂鐨勫騫胯礬寰?#8221;涓瀹氶鍏堣繛鍚戜竴涓湪鍘熷尮閰嶄腑娌℃湁涓庣偣A閰嶅鐨勭偣B銆傚鏋滅偣B鍦ㄥ師鍖歸厤涓病鏈変笌浠諱綍鐐歸厤瀵癸紝鍒欏畠灝辨槸榪欐潯澧炲箍璺緞鐨勭粓鐐癸紱鍙嶄箣錛屽鏋滅偣B宸蹭笌鐐笴閰嶅錛岄偅涔堣繖鏉″騫胯礬寰勫氨鏄粠A鍒癇錛屽啀浠嶣鍒癈錛屽啀鍔犱笂“浠庣偣C鍑哄彂鐨勫騫胯礬寰?#8221;銆傚茍涓旓紝榪欐潯浠嶤鍑哄彂鐨勫騫胯礬寰勪腑涓嶈兘涓庡墠鍗婇儴鍒嗙殑澧炲箍璺緞鏈夐噸澶嶇殑鐐廣?br>
姣斿鍥?涓紝鎴戜滑瑕佸鎵句竴鏉′粠3鍑哄彂鐨勫騫胯礬寰勶紝瑕佸仛浠ヤ笅3姝ワ細
(1)棣栧厛浠?鍑哄彂錛屽畠鑳借繛鍒扮殑鐐瑰彧鏈?錛岃?鍦ㄥ浘1涓凡緇忎笌2閰嶅錛屾墍浠ョ洰鍓嶇殑澧炲箍璺緞灝辨槸3->6->2鍐嶅姞涓婁粠2鍑哄彂鐨勫騫胯礬寰勩?br>(2)浠?鍑哄彂錛屽畠鑳借繛鍒扮殑涓嶄笌鍓嶅崐閮ㄥ垎璺緞閲嶅鐨勭偣鍙湁5錛岃屼笖5紜疄鍦ㄥ師鍖歸厤涓病鏈変笌2閰嶅銆傛墍浠ヤ粠2榪炲埌5銆備絾5鍦ㄥ浘1涓凡緇忎笌1閰嶅錛屾墍浠ョ洰鍓嶇殑澧炲箍璺緞涓?->6->2->5->1鍐嶅姞涓婁粠1鍑哄彂鐨勫騫胯礬寰勩?br>(3)浠?鍑哄彂錛岃兘榪炲埌鐨勪笉涓庤嚜宸查厤瀵瑰茍涓斾笉涓庡墠鍗婇儴鍒嗚礬寰勯噸澶嶇殑鐐瑰彧鏈?銆傚洜涓?鍦ㄥ浘1涓病鏈変笌浠諱綍鐐歸厤瀵癸紝鎵浠ュ畠灝辨槸緇堢偣銆傛墍浠ユ渶緇堢殑澧炲箍璺緞鏄?->6->2->5->1->4銆?br>
浣嗘槸涓ユ牸鍦拌錛屼互涓婅繃紼嬩腑浠?鍑哄彂鐨勫騫胯礬寰勶紙2->5->1->4錛夊拰浠?鍑哄彂鐨勫騫胯礬寰勶紙1->4錛夊茍涓嶆槸鐪熸鐨勫騫胯礬寰勩傚洜涓哄畠浠笉絎﹀悎鍓嶉潰璁茶繃鐨勫騫胯礬寰勭殑絎?鏉℃ц川錛屽畠浠殑璧風偣閮芥槸宸茬粡閰嶈繃瀵圭殑鐐廣傛垜浠湪榪欓噷縐板畠浠負“澧炲箍璺緞”鍙槸涓轟簡鏂逛究璇存槑鏁翠釜鎼滃鐨勮繃紼嬨傝岃繖涓ゆ潯璺緞鏈韓鍙兘綆楁槸涓や釜涓嶄負澶栫晫鎵鐭ョ殑瀛愯繃紼嬬殑榪斿洖緇撴灉銆?br>鏄劇劧錛屼粠涓婇潰鐨勪緥瀛愬彲浠ョ湅鍑猴紝鎼滃澧炲箍璺緞鐨勬柟娉曞氨鏄疍FS錛屽彲浠ュ啓鎴愪竴涓掑綊鍑芥暟銆傚綋鐒訛紝鐢˙FS涔熷畬鍏ㄥ彲浠ュ疄鐜般?br>
鑷蟲錛岀悊璁哄熀紜閮ㄤ喚璁插畬浜嗐備絾鏄瀹屾垚鍖堢墮鍒╃畻娉曪紝榪橀渶瑕佷竴涓噸瑕佺殑瀹氱悊錛?br>
濡傛灉浠庝竴涓偣A鍑哄彂錛屾病鏈夋壘鍒板騫胯礬寰勶紝閭d箞鏃犺鍐嶄粠鍒殑鐐瑰嚭鍙戞壘鍒板灝戝騫胯礬寰勬潵鏀瑰彉鐜板湪鐨勫尮閰嶏紝浠嶢鍑哄彂閮芥案榪滄壘涓嶅埌澧炲箍璺緞銆?br>
瑕佺敤鏂囧瓧鏉ヨ瘉鏄庤繖涓畾鐞嗗緢綣侊紝璇濆緢闅捐錛岃涔堟垜榪樺緱澶氱敾涓寮犲浘錛屾垜鍦ㄦ灝辯渷浜嗐傚叾瀹炰綘鑷繁鐢誨嚑涓浘錛岃瘯鍥句婦涓や釜鍙嶄緥錛岃繖涓畾鐞嗕笉闅炬兂閫氱殑銆傦紙緇欎釜鎻愮ず銆傚鏋滀綘璇曞浘涓句釜鍙嶄緥鏉ヨ鏄庡湪鎵懼埌浜嗗埆鐨勫騫胯礬寰勫茍鏀瑰彉浜嗙幇鏈夌殑鍖歸厤鍚庯紝浠嶢鍑哄彂灝辮兘鎵懼埌澧炲箍璺緞銆傞偅涔堬紝鍦ㄨ繖縐嶆儏鍐典笅錛岃偗瀹氬湪鎵懼埌鍒殑澧炲箍璺緞涔嬪墠錛屽氨鑳戒粠A鍑哄彂鎵懼埌澧炲箍璺緞銆傝繖灝變笌鍋囪鐭涚浘浜嗐傦級
鏈変簡榪欎釜瀹氱悊錛屽寛鐗欏埄綆楁硶灝辨垚褰簡銆傚涓嬶細
鍒濆鏃舵渶澶у尮閰嶄負絀?br>for 浜屽垎鍥懼乏鍗婅竟鐨勬瘡涓偣i
    do 浠庣偣i鍑哄彂瀵繪壘澧炲箍璺緞銆傚鏋滄壘鍒幫紝鍒欐妸瀹冨彇鍙嶏紙鍗沖鍔犱簡鎬諱簡鍖歸厤鏁幫級銆?wbr>

濡傛灉浜屽垎鍥劇殑宸﹀崐杈逛竴鍏辨湁n涓偣錛岄偅涔堟渶澶氭壘n鏉″騫胯礬寰勩傚鏋滃浘涓叡鏈塵鏉¤竟錛岄偅涔堟瘡鎵句竴鏉″騫胯礬寰勶紙DFS鎴朆FS錛夋椂鏈澶氭妸鎵鏈夎竟閬嶅巻涓閬嶏紝鎵鑺辨椂闂翠篃灝辨槸m銆傛墍浠ユ葷殑鏃墮棿澶ф灝辨槸O錛坣 * m錛夈?br>

铚楃墰 2008-11-29 13:08 鍙戣〃璇勮
]]>
POJ 3020 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/29/68139.html铚楃墰铚楃墰Sat, 29 Nov 2008 03:06:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/29/68139.htmlhttp://www.shnenglu.com/apple365/comments/68139.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/29/68139.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/68139.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68139.html//鐢ㄧ畻娉曞璁轟功涓婃渶澶ф祦鍋氱殑浜屽垎鍥懼尮閰嶏紝鎵浠ュ唴瀛樿楃殑姣旇緝澶э紝鍥犱負闇瑕侀槦鍒楁潵瀛樺偍澧炲箍璺緞
//涓涓暟緇勬病鏈夊垵濮嬪寲錛寃rong浜哊嬈?wbr>
//寰堝浜洪兘鏄敤鍖堢墮鍒╃畻娉曞仛鐨勶紝鍋朵篃鍑嗗瀛﹀浼犺涓殑鍖堢墮鍒╃畻娉?wbr>
#include<iostream>
using namespace std;
int h,w,flag,res,node;
int arr[500][500],map[50][20];
int q[10000],pre[10000],used[500];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int path(int s)  //瀵繪壘澧炲箍璺緞
{ int u,head,tail,temp,i,j;
  head=tail=0;
  q[tail++]=s;
  used[s]=1;
  while(head<tail)
       { temp=tail;
         for(i=head;i<temp;i++)
             {    u=q[i];
                  if(u==1)
                     return 1;
                  for(j=0;j<node;j++)
                     if(used[j]==0 && arr[u][j]>0)
                        {pre[j]=u;
                         used[j]=1;
                         q[tail++]=j;
                         }
              }
          head=temp;
       }
  return 0;      
}

void  ford_fulkerson() //淇敼澧炲厜璺緞涓婅竟鐨勬畫鐣欏閲忥紝璁板綍鍖歸厤鐨勭粨鏋?br>{ int i,j,u,v,min,x,y;
  min=INT_MAX;
  u=pre[1];
  v=1;
  while(u>=0)
       {if(arr[u][v]<min)
             min=arr[u][v];
            v=u;
            u=pre[u];
       }

  u=pre[1];
  v=1;
  while(u>=0)
       {   arr[u][v]=arr[u][v]-min;
           arr[v][u]=arr[v][u]+min;
           v=u;
           u=pre[u];
        }
   res=res+min;        
}        

int main()
{int i,j,k,Case,x,y;
char c;
       freopen("in.txt","r",stdin);
       freopen("out.txt","w",stdout);
         scanf("%d",&Case);
       while(Case--)  
          { flag=0;
            res=0;
            node=2;
          scanf("%d%d",&h,&w);
          memset(map,0,sizeof(map));
          memset(used,0,sizeof(used));
          memset(arr,0,sizeof(arr));
          for(i=0;i<h;i++)
              {getchar();
               for(j=0;j<w;j++)
                  { scanf("%c",&c);
                    if(c=='*')
                      map[i][j]=node++;
                   }
               }  
           for(i=0;i<h;i++) //鏋勫浘寤烘ā錛屾娊璞℃垚浜屽垎鍥懼尮閰嶇殑闂
              for(j=0;j<w;j++)
                  { if(map[i][j] && !used[map[i][j]])
                       {  arr[0][map[i][j]]=1;
                          used[map[i][j]]=1;
                          for(k=0;k<4;k++)
                             { x=i+dx[k];
                               y=j+dy[k];
                               if(x>=0 && x<h && y>=0 && y<w && map[x][y])
                               {arr[map[i][j]][map[x][y]]=1;
                                arr[map[x][y]][1]=1;
                                used[map[x][y]]=1;
                               }
                             }
                       }
                  }          
           while(!flag)
             { memset(used,0,sizeof(used));
               memset(pre,-1,sizeof(pre));
               if(path(0))
                  ford_fulkerson();
                else
                  flag=1;
              }
    printf("%d\n",node-2-res);
  }  
   return 0;
}    

铚楃墰 2008-11-29 11:06 鍙戣〃璇勮
]]>
POJ 1087 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/28/68061.html铚楃墰铚楃墰Fri, 28 Nov 2008 06:06:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/28/68061.htmlhttp://www.shnenglu.com/apple365/comments/68061.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/28/68061.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/68061.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68061.html//棰樼洰澶毦鎳備簡錛屽緩妯℃瘮杈冨洶闅?wbr>
//寰堝浜烘妸瀹冨仛鎴愪簩鍒嗗浘
鍖歸厤
//浣嗚矊浼肩敤鏈澶ф祦涔熻兘姹傚嚭鏉?br>#include<iostream>
#include<string>
#include<map>
using namespace std;
int nr,np,na,flag,res,node;
int arr[402][402];
int q[1000],pre[1000],used[402];
map <string,int> PR;

int path(int s)
{ int u,head,tail,temp,i,j;
  head=tail=0;
  q[tail++]=s;
  used[s]=1;
  while(head<tail)
       { temp=tail;
         for(i=head;i<temp;i++)
             {    u=q[i];
                  if(u==1)
                     return 1;
                  for(j=0;j<node;j++)
                     if(used[j]==0 && arr[u][j]>0)
                        {pre[j]=u;
                         used[j]=1;
                         q[tail++]=j;
                         }
              }
          head=temp;
       }
  return 0;      
}


void  ford_fulkerson()
{ int i,j,u,v,min,x,y;
  min=INT_MAX;
  u=pre[1];
  v=1;
  while(u>=0)
       {if(arr[u][v]<min)
             min=arr[u][v];
            v=u;
            u=pre[u];
       }
    
  u=pre[1];
  v=1;
  while(u>=0)
       {   arr[u][v]=arr[u][v]-min;
           arr[v][u]=arr[v][u]+min;
           v=u;
           u=pre[u];
        }
   res=res+min;       
}       


int main()
{int u,v,w,i,j;
 char str1[25],str2[25];
       freopen("in.txt","r",stdin);
       freopen("out.txt","w",stdout);
         scanf("%d",&nr);
          flag=0;
          res=0;
          node=2;
          for(i=0;i<nr;i++)
             { scanf("%s",str1);
               if(!PR[str1])
                   PR[str1]=node++;
               arr[0][PR[str1]]++;
             }
        
         scanf("%d",&np);
         for(i=0;i<np;i++)
             {  scanf("%s%s",str1,str2);
                 if(!PR[str2])
                    PR[str2]=node++;
                arr[PR[str2]][1]++;
             }   
        
         scanf("%d",&na);
         for(i=0;i<na;i++)
             {   scanf("%s%s",str1,str2);
                 if(!PR[str1])
                    PR[str1]=node++;
                  if(!PR[str2])
                    PR[str2]=node++; 
                  arr[PR[str2]][PR[str1]]=INT_MAX;
              }    
          
         while(!flag)
             { memset(used,0,sizeof(used));
               memset(pre,-1,sizeof(pre));
               if(path(0))
                  ford_fulkerson();
                else
                  flag=1;
              }
   printf("%d\n",np-res);  
   return 0;
}   



铚楃墰 2008-11-28 14:06 鍙戣〃璇勮
]]>
POJ 1459 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/68003.html铚楃墰铚楃墰Thu, 27 Nov 2008 09:42:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/68003.htmlhttp://www.shnenglu.com/apple365/comments/68003.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/68003.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/68003.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/68003.html涓錛嶧ord鍜孎ulkerson榪姞綆楁硶.

銆銆鍩烘湰鎬濊礬錛氭妸鍚勬潯寮т笂鍗曚綅嫻侀噺鐨勮垂鐢ㄧ湅鎴愭煇縐嶉暱搴?鐢ㄦ眰瑙f渶鐭礬闂鐨勬柟娉曠‘瀹氫竴鏉¤嚜V1鑷砎n鐨勬渶鐭礬;鍦ㄥ皢榪欐潯鏈鐭礬浣滀負鍙墿鍏呰礬,鐢ㄦ眰瑙f渶澶ф祦闂鐨勬柟娉曞皢鍏朵笂鐨勬祦閲忓鑷蟲渶澶у彲鑳藉?鑰岃繖鏉℃渶鐭礬涓婄殑嫻侀噺澧炲姞鍚?鍏朵笂鍚勬潯寮х殑鍗曚綅嫻侀噺鐨勮垂鐢ㄨ閲嶆柊紜畾,濡傛澶氭榪唬,鏈緇堝緱鍒版渶灝忚垂鐢ㄦ渶澶ф祦.

銆銆榪姞綆楁硶錛?br>
銆銆1) 緇欏畾鐩爣嫻侀噺F鎴?#8734;,緇欏畾鏈灝忚垂鐢ㄧ殑鍒濆鍙嫻?0

銆銆2) 鑻(f)=F,鍋滄,f涓烘渶灝忚垂鐢ㄦ祦;鍚﹀垯杞?3).

銆銆3) 鏋勯?鐩稿簲鐨勬柊鐨勮垂鐢ㄦ湁鍚戝浘W(fij),鍦╓(fij)瀵繪壘Vs鍒癡t鐨勬渶灝忚垂鐢ㄦ湁鍚戣礬P(鏈鐭礬),娌縋澧炲姞嫻乫鐨勬祦閲忕洿鍒癋,杞?2);鑻ヤ笉瀛樺湪浠嶸s鍒癡t鐨勬渶灝忚垂鐢ㄧ殑鏈夊悜璺疨,鍋滄.f灝辨槸鏈灝忚垂鐢ㄦ渶澶ф祦.

銆銆鍏蜂綋瑙i姝ラ錛?br>
銆銆璁懼浘涓弻綰挎墍紺鴻礬寰勪負鏈鐭礬寰勶紝璐圭敤鏈夊悜鍥句負W錛坒ij錛夛紟

銆銆鍦ㄥ浘(a)涓粰鍑洪浂嫻?f,鍦ㄥ浘(b)涓壘鍒版渶灝忚垂鐢ㄦ湁鍚戣礬,淇敼鍥?a)涓殑鍙嫻?δ=min{4,3,5}=3,寰楀浘(c),鍐嶅仛鍑?c)鐨勮皟鏁村閲忓浘,鍐嶆瀯閫犵浉搴旂殑鏂扮殑鏈灝忚垂鐢ㄦ湁鍚戣礬寰楀浘(d), 淇敼鍥?c)涓殑鍙嫻? δ=min{1,1,2,2}=1,寰楀浘(e),浠ユ綾繪帹,涓鐩村緱鍒板浘(h),鍦ㄥ浘(h)涓互鏃犳渶灝忚垂鐢ㄦ湁鍚戣礬,鍋滄,緇忚綆?

銆銆鍥?h)涓?鏈灝忚垂鐢?1*4+3*3+2*4+4*1+1*1+4*2+1*1+3*1=38

銆銆鍥?g)涓?鏈澶ф祦=5

銆銆鏈澶ф祦闂浠呮敞鎰忕綉緇滄祦鐨勬祦閫氳兘鍔涳紝娌℃湁鑰冭檻嫻侀氱殑璐圭敤銆傚疄闄呬笂璐圭敤鍥犵礌鏄緢閲嶈鐨勩備緥濡傚湪浜ら氳繍杈撻棶棰樹腑錛屽線寰瑕佹眰鍦ㄥ畬鎴愯繍杈撲換鍔$殑鍓嶆彁涓嬶紝瀵繪眰涓涓嬌鎬昏繍杈撹垂鐢ㄦ渶鐪佺殑榪愯緭鏂規錛岃繖灝辨槸鏈灝忚垂鐢ㄦ祦闂銆傚鏋滃彧鑰冭檻鍗曚綅璐х墿鐨勮繍杈撹垂鐢紝閭d箞榪欎釜闂灝卞彉鎴愭渶鐭礬闂銆傜敱姝ゅ彲瑙侊紝鏈鐭礬闂鏄渶灝忚垂鐢ㄦ祦闂鐨勫熀紜銆傜幇宸叉湁涓緋誨垪姹傛渶鐭礬鐨勬垚鍔熸柟娉曘傛渶灝忚垂鐢ㄦ祦(鎴栨渶灝忚垂鐢ㄦ渶澶ф祦)闂 錛屽彲浠ヤ氦鏇夸嬌鐢ㄦ眰瑙f渶澶ф祦鍜屾渶鐭礬涓ょ鏂規硶錛岄氳繃榪唬寰楀埌瑙e喅銆?br>

//鑰佽佸疄瀹炵湅浜嗕竴澶╃殑涔︼紝緇堜簬鏁插嚭浜嗙涓涓叧浜庣綉緇滄祦鐨勭▼搴?wbr style="LINE-HEIGHT: 1.3em">
//搴嗙嫻佺殑闆剁殑紿佺牬

#include<iostream>
using namespace std;
int n,np,nc,m,flag,res;
int arr[110][110];
int q[10000],pre[10000],used[110];

int path(int s)
{ int u,head,tail,temp,i,j;
  head=tail=0;
  q[tail++]=s;
  used[s]=1;
  while(head<tail)
       { temp=tail;
         for(i=head;i<temp;i++)
             {    u=q[i];
                  if(u==n+1)
                     return 1;
                  for(j=0;j<=n+1;j++)
                     if(!used[j] && arr[u][j]>0)
                        {pre[j]=u;
                         used[j]=1;
                         q[tail++]=j;
                         }
              }
          head=temp;
       }
  return 0;      
}


void  ford_fulkerson()
{ int i,j,u,v,min;
  min=INT_MAX;
 
  u=pre[n+1];
  v=n+1;
  while(u>=0)
       {if(arr[u][v]<min)
             min=arr[u][v];
           v=u;
           u=pre[u];
         
       }
    
  u=pre[n+1];
  v=n+1;
  while(u>=0)
       {   arr[u][v]=arr[u][v]-min;
           arr[v][u]=arr[v][u]+min;
           v=u;
           u=pre[u];
        }
   res=res+min;       
}       


int main()
{int u,v,w,i,j;
       freopen("in.txt","r",stdin);
       freopen("out.txt","w",stdout);
 while((scanf("%d%d%d%d",&n,&np,&nc,&m))!=EOF)
       {  flag=0;
          res=0;
          memset(arr,0,sizeof(arr));
           for(i=0;i<m;i++)
             { while(getchar()!='(');
               scanf("%d,%d)%d",&u,&v,&w);
               arr[u][v]=w;
             } 
           for(i=0;i<np;i++)
             {  while(getchar()!='(');
                scanf("%d)%d",&v,&w);
                arr[n][v]=w;
              } 
         
            for(i=0;i<nc;i++)
             { while(getchar()!='(');
               scanf("%d)%d",&u,&w);
               arr[u][n+1]=w;
              }   
                                            
           while(!flag)
             { memset(used,0,sizeof(used));
               memset(pre,-1,sizeof(pre));
               if(path(n))
                  ford_fulkerson();
                else
                  flag=1;
              }     
    printf("%d\n",res);  
 }                                      
   return 0;
}   



铚楃墰 2008-11-27 17:42 鍙戣〃璇勮
]]>
POJ 1094 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67956.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:22:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67956.htmlhttp://www.shnenglu.com/apple365/comments/67956.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67956.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67956.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67956.html//鐢―FS榪涜鎷撴墤鎺掑簭錛岃秴鏃?錛屽彧鑳介噸鍐?wbr>
#include"stdio.h"
#include"string.h"
#include"stdlib.h"

int map[26][26],v[26],used[26],flag,n,total;
char str[27];
void sort(int i,int m)
{ int k;
if(total==n)
     {  flag=2;
          return ;
      }  
for(k=0;k<n && !flag;k++)
      { if(map[i][k]==0)
           continue;
       if(v[k])
          { flag=1;
             return ;
           }
       str[m]=k+65;    
       total++;
       v[k]=1;  
       sort(k,m+1);
       if(flag)
          return ;
       v[k]=0;
       total--;
      }
}                


int main()
{int row,i,j,a,b,k,l;
char s[4];
   freopen("in.txt","r",stdin);
   freopen("out.txt","w",stdout);
while(1)
  { scanf("%d%d",&n,&row);
     if(n==0 && row==0)
        break;

     flag=0;
     memset(map,0,sizeof(map));
     memset(used,0,sizeof(used));
     for(k=1;k<=row;k++)
         { scanf("%s",s);
          if(!flag)
           {memset(v,0,sizeof(v));
            a=s[0]-65;
            b=s[2]-65;
            used[a]=1;
            used[b]=1;
            map[a][b]=1;
            for(i=0;i<n && !flag;i++)
               {  if(used[i]==0)
                     break;
                    total=1;
                    v[i]=1;
                    str[0]=i+65;
                    sort(i,1);
                    v[i]=0;
               }

             if(flag==1)      
              printf("Inconsistency found after %d relations.\n",k);    
             else if(flag==2)
               {printf("Sorted sequence determined after %d relations: ",k);
                       for(i=0;i<n;i++)
                          printf("%c",str[i]);
                         printf(".\n");
                         flag=1;
               }  
          }
     }                

   if(!flag)
      printf("Sorted sequence cannot be determined.\n");

   }

return 0;
}              



// 鏀圭敤floyd_warshall綆楁硶鎵嶈繃
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
typedef struct Node{
        int d;
        char c;
}Node;            
int map[26][26],used[26],flag,n;
Node node[26];

int cmp(const void *a, const void *b)
{ return (*(Node *)a).d-(*(Node *)b).d;
}


void check()
{int i,j;
for(i=0;i<n;i++)
     { if(used[i]==0)
           return ;
       for(j=0;j<n;j++)
           if(map[i][j])
             node[j].d++;
     }
   qsort(node,n,sizeof(Node),cmp);
    for(i=0;i<n;i++)
        if(node[i].d!=i)
           return ;
        flag=2;
}    
int main()
{int row,i,j,a,b,k,h;
char s[4];
   freopen("in.txt","r",stdin);
   freopen("out.txt","w",stdout);
while(1)
  { scanf("%d%d",&n,&row);
     if(n==0 && row==0)
        break;
     flag=0;
     memset(map,0,sizeof(map));
     for(h=1;h<=row;h++)
         { scanf("%s",s);
           if(!flag)
           {a=s[0]-65;
            b=s[2]-65;
            used[a]=1;
            used[b]=1;
            for(i=0;i<n;++i)
                {node[i].d=0;
                 node[i].c=i+65;
                 }
         if(map[b][a]==1 || a==b)
             { printf("Inconsistency found after %d relations.\n",h);
               flag=1;
             }
          else
               map[a][b]=1;
          for(k=0;k<26;++k)
                for(i=0;i<26;++i)
                   for(j=0;j<26;++j)
                     map[i][j]=(map[i][j]||(map[i][k]&&map[k][j]));

        if(!flag)
            check();
        if(flag==2)
             {printf("Sorted sequence determined after %d relations: ",h);
                  for(i=0;i<n;i++)
                      printf("%c",node[i].c);
                     printf(".\n");

             }  
          }
     }                

   if(!flag)
      printf("Sorted sequence cannot be determined.\n");

   }

return 0;
}

铚楃墰 2008-11-27 00:22 鍙戣〃璇勮
]]>
POJ 1062 Java 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67955.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:20:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67955.htmlhttp://www.shnenglu.com/apple365/comments/67955.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67955.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67955.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67955.html//浠跨収鍒漢鐨勬濇兂鏁插緱,涔嬪墠涓嶆槸寰堜簡瑙ijkstra錛屽仛榪囪繖棰樺悗鏈変簺鐞嗚В
//1,灝嗗綋鍓嶆湭綰沖叆鏈鐭礬鐨勭鍚堣姹傜殑璺濈鏈鐭粨鐐圭撼鍏ユ渶鐭礬;
//2,灝嗘墍鏈変笌褰撳墠綰沖叆鐨勭粨鐐規湁鍏寵仈騫朵笖鏈綰沖叆鏈鐭礬鐨勭粨鐐規渶鐭窛紱昏繘琛屾洿鏂般?
//鍥捐涓彟涓涓眰鏈灝忕敓鎴愭爲鐨勭殑緇忓吀綆楁硶Prim綆楁硶涓嶥ij榪囩▼鏋佸叾綾諱技錛岄兘鏄椽蹇冩濇兂銆?
//鍙槸涓涓槸瀵歸《鐐圭殑閫夋嫨錛屽彟澶栦竴涓槸瀵硅竟鐨勯夋嫨銆?

import java.util.*;
public class Main
{ public static int[][] e;
   public static int[]  dis;
   public static int[] used;
   public static int[] level;
   public static int n,m;
   public static void main(String[] args){
    Scanner cin = new Scanner(System.in);
    int  x,t;
    e = new int[101][101];
    dis = new int[101];
    used =  new int[101];
    level = new int[101];
          m=cin.nextInt();
          n=cin.nextInt();
           for(int i=1;i<=n;i++)
             {   e[0][i]=cin.nextInt();
                 level[i]=cin.nextInt();
                  x=cin.nextInt();
                for(int j=0;j<x;j++)
                { t=cin.nextInt();
                  e[t][i]=cin.nextInt();
                }
             }
           solve();
}

public static void solve()
{ int max,result;
  result=e[0][1];
  for(int i=1;i<=n;i++)
     { max=level[i];
       for(int j=1;j<=n;j++)
        if(level[j]>max || level[j]<max-m)//鍒ゆ柇鎵浜ゆ槗鐨勪漢鐨勭瓑綰ф槸鍚︾鍚堥鐩墍榪扮殑鏉′歡
         used[j]=1;//涓嶇鍚?
        else
         used[j]=0; //絎﹀悎
       dijkstra();
       if(result>dis[1]) //姣旇緝姣忔鎵姹傜殑璐圭敤
         result=dis[1];
}
System.out.println(result);
}
public static void dijkstra()
{ int min,temp,k;
  for(int i=1;i<=n;i++)
   dis[i]=e[0][i];
  for(int i=1;i<=n;i++)
     { min=0x7FFFFFFF;
       k=0;
       for(int j=1;j<=n;j++)//鎵懼嚭浠d環鏈灝忕殑杈?
         if(used[j]==0 && dis[j]<min)
          {min=dis[j];
              k=j;
          }
       if(k==0)
        break;
       used[k]=1;
       for(int j=1;j<=n;j++)//鏇存柊鍏惰妭鐐圭殑鍊?
        if(used[j]==0 && e[k][j]>0 && min+e[k][j]<dis[j])
         dis[j]=min+e[k][j];
    }
   }
}


铚楃墰 2008-11-27 00:20 鍙戣〃璇勮
]]>
POJ 1125 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67954.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:19:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67954.htmlhttp://www.shnenglu.com/apple365/comments/67954.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67954.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67954.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67954.html//鍒漢浜斿垎閽熻兘鏁插嚭鏉ョ殑棰橈紝鎴戝嵈鍋氫簡浜斾釜灝忔椂錛屽樊璺濆ぇ鐨勫悡浜?wbr>
//涓鐪煎氨鍙互鐪嬪嚭鏉ョ敤folyd_warshell,鎴戝嵈鐢╠ijkstra錛岃皟璇曚簡N涔?wbr>
//棣栧厛寮曡繘涓涓緟鍔╁悜閲廳[i]琛ㄧず褰撳墠鎵鎵懼埌鐨勪粠璧風偣 v鍒版瘡涓粓鐐圭殑鏈鐭礬寰勭殑闀垮害.
瀹冪殑鍒濇佷負:鑻ヤ粠v鍒皏i鏈夌嫄,鍒檇[i]涓哄姬涓婄殑鏉?鍚﹀垯d[i]涓篿nifity.鏄劇劧鏈?nbsp; 
//涓鏉℃渶鐭礬寰勬垨鑰呮槸寮?s,x),鎴栬呮槸涓棿鍙粡榪噑鐨勯《鐐硅屾渶鍚庡埌杈鵑《鐐箈鐨勮礬寰?鎵浠?wbr>
//d[x]=min{d[x],d[s]+arcs[s][x]}

#include<iostream>
using namespace std;
int used[101],map[101][101],d[101],n,flag,max1,max2,v;
void solve(int i)
{ int j,k,min,v0,v1;
  for(j=1;j<=n;j++)
      {  used[j]=0;
         if(map[i][j]==0)
            d[j]=1000000000;
         else
            d[j]=map[i][j];
      }      

     used[i]=1;
      while(1)
      { min=1000000000;
        v0=0;
        for(j=1;j<=n;j++)
            { if(used[j]==0 && d[j]<min)
                 {min=d[j];
                   v0=j;
                  }
            }
       if(v0==0)
           break;
       used[v0]=1;
       for(j=1;j<=n;j++)    
           {if(used[j]==0 &&  map[v0][j] && min+map[v0][j]<d[j])
                d[j]=min+map[v0][j];
           }          
     }


   max1=0;
  for(k=1;k<=n;k++)
       { if(k==i)
           continue;
         if(d[k]>max1)
           {max1=d[k];
            v1=i;
           }
        }    

    if(max1<max2)
       {     flag=1;
             v=v1;      
             max2=max1;
       }  
}    

int main()
{ int m,i,j,a,b;
       freopen("in.txt","r",stdin);
       freopen("out.txt","w",stdout);
   while(cin>>n,n!=0)
       {  memset(map,0,sizeof(map));

          flag=0;
          for(i=1;i<=n;i++)
              { cin>>m;
               for(j=1;j<=m;j++)
                   { cin>>a>>b;
                     map[i][a]=b;
                   }
              }
      max2=1000000000;
      v=0;
      for(i=1;i<=n;i++)  
            solve(i);
      if(n==1)
          {  flag=1;
              v=1;
              max2=0;
           }
       if(flag)
          cout<<v<<" "<<max2<<endl;
       else
          cout<<"disjoint"<<endl;            

        }

    return 0;          
}    

铚楃墰 2008-11-27 00:19 鍙戣〃璇勮
]]>
POJ 2253 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67952.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:17:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67952.htmlhttp://www.shnenglu.com/apple365/comments/67952.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67952.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67952.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67952.html//鍓嶅嚑澶╃殑棰橈紝鍒漢閮界敤floyd_warshall,鎴戝氨鐢╠ijkstra;
//鑰岃繖涓寰堝浜洪兘鐢╠ijkstra,鎴戝氨鐢╢loyd_warshall;
//涓や釜瀛楋紝flody鐨勪唬鐮佹暡璧鋒潵灝辨槸綆鍗曪紝浣嗘晥鐜囨瘮杈冪殑浣庯紝澶嶆潅搴︽槸(n^3)

#include<iostream>
#include<cmath>
#include <algorithm>
using namespace std;
int main()
{ int n,Case,i,j,k;
  int x[201],y[201];
  int map[201][201];
  freopen("in.txt","r",stdin);
  freopen("out.txt","w",stdout);
  Case=1;
  while(scanf("%d",&n),n!=0)
       {    memset(map,0,sizeof(map));
            for(i=1;i<=n;i++)
              scanf("%d%d",&x[i],&y[i]);
             for( i=1;i<=n;i++)
               for( j=i+1;j<=n;j++)
                   { map[i][j]=abs((x[j]-x[i])*(x[j]-x[i])+(y[j]-y[i])*(y[j]-y[i]));
                     map[j][i]=map[i][j];
                    }
          for( k=1;k<=n;k++)
              for( i=1;i<=n;i++)
                  for( j=i+1;j<=n;j++)
                      { if(map[i][k] && map[k][j] && map[i][k]<map[i][j] && map[k][j]<map[i][j])
                           { if(map[i][k]>map[k][j])
                                map[i][j]=map[i][k];
                             else
                                map[i][j]=map[k][j];
                           }  
                        
                            map[j][i]=map[i][j];
                       }          
        printf("Scenario #%d\n",Case++);
        printf("Frog Distance = %.3lf\n\n",sqrt(map[1][2]*1.0));
   }
  
   return 0;
}    

铚楃墰 2008-11-27 00:17 鍙戣〃璇勮
]]>
POJ 2240 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67951.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:16:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67951.htmlhttp://www.shnenglu.com/apple365/comments/67951.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67951.html#Feedback1http://www.shnenglu.com/apple365/comments/commentRss/67951.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67951.html//浠婂ぉ絎簩嬈$敤floyd_warshall,鏁茬殑鎵嬫湁鐐硅蔣
#include<iostream>
#include<string.h>
using namespace std;
int main()
{  int n,m,flag,Case;
   double temp,array[31][31];
   char s1[100],s2[100],str[31][100];
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    Case=1;
   while(scanf("%d",&n),n!=0)
        {  flag=0;
           memset(array,0,sizeof(array));
           for(int i=1;i<=n;i++)
               scanf("%s",str[i]);
           scanf("%d",&m);
           for(int i=1;i<=m;i++)
               {int k,j;
                scanf("%s%lf%s",s1,&temp,s2);
                for(int h=1;h<=n;h++)
                    { if(!strcmp(str[h],s1))
                          k=h;
                      if(!strcmp(str[h],s2))
                          j=h;  
                    }  
                     array[k][j]=temp;
               }


           for( int k=1;k<=n;k++)
              for( int i=1;i<=n;i++)
                  for(int j=1;j<=n;j++)
                      if(array[i][j]<array[i][k]*array[k][j])
                          array[i][j]= array[i][k]*array[k][j];


           for( int i=1;i<=n;i++)
                if(array[i][i]>1)
                   { flag=1;
                     break;
                    }


              if(flag)
                 printf("Case %d: Yes\n",Case++);
              else
                 printf("Case %d: No\n",Case++);
  }
  return 0;          
}

铚楃墰 2008-11-27 00:16 鍙戣〃璇勮
]]>
POJ 1860 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67949.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:15:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67949.htmlhttp://www.shnenglu.com/apple365/comments/67949.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67949.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67949.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67949.html//鐭ラ亾浜嗕粈涔堟槸bellman_ford;
//涓瀹氳鍧氭寔涓嬪幓
#include<iostream>
#define eps 1e-8
using namespace std;
typedef struct E{
int v,u;
double r,c;
};
int n,m,s,num;
double money,d[101];
E e[201];
bool  bellman()
{ int flag;
  memset(d,0,sizeof(d));
  d[s]=money;
  while(d[s]<=money+eps)
      { flag=0;
        for(int i=0;i<num;i++)
            if(d[e[i].v]+eps<(d[e[i].u]-e[i].c) * e[i].r)
              { d[e[i].v]=(d[e[i].u]-e[i].c)*e[i].r;
                flag=1;
               }

           if(!flag)
                 return d[s]>money+eps;
         }
     return true;          
}

int main()
{int V,U;
double cv,rv,cu,ru;
   freopen("in.txt","r",stdin);
   freopen("out.txt","w",stdout);
  while((scanf("%d%d%d%lf",&n,&m,&s,&money))!=EOF)
     {num=0;
     for(int i=1;i<=m;i++)
          {scanf("%d%d%lf%lf%lf%lf",&U,&V,&rv,&cv,&ru,&cu);
            e[num].v=V;
            e[num].u=U;
            e[num].r=rv;
            e[num++].c=cv;
            e[num].v=U;
            e[num].u=V;
            e[num].r=ru;
            e[num++].c=cu;
           }
       if(bellman())
          printf("YES\n");
       else
          printf("NO\n");
      }

      return 0;
}            

铚楃墰 2008-11-27 00:15 鍙戣〃璇勮
]]>
POJ 1789 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67947.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:13:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67947.htmlhttp://www.shnenglu.com/apple365/comments/67947.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67947.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67947.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67947.html
//鍏跺疄灝辨槸姹傛渶灝忕敓鎴愭爲錛岀敤緇忓吀鐨刾rim綆楁硶
#include<iostream>
using namespace std;
int  array[2001][2001],total;
int  used[2001],dis[2001];
char truck[2001][8];
void prim(int n)
{ int v,min;
  for(int i=1;i<=n;i++)
      {used[i]=0;
       dis[i]=array[1][i];
       }
       used[1]=1;
      while(true)
        {  min=INT_MAX;
            v=0;
            for(int i=1;i<=n;i++)
               if(!used[i] && dis[i]<min) //鍦⊿鐨勮ˉ闆嗛夊嚭鏉冩渶灝忕殑杈?wbr>
                 { min=dis[i];
                   v=i;
                  }
            if(v==0)
               break;
           total=total+min;
           used[v]=1; //鍔犲叆S闆嗗悎
           for(int j =1;j<=n;j++)
               if(!used[j] && dis[j]>array[v][j]) //鏇存柊鏈灝忔潈杈圭殑鍊?wbr>
                   dis[j]=array[v][j];
        }  
  }                  

int main()
{int n,sum;
      freopen("in.txt","r",stdin);
      freopen("out.txt","w",stdout);
while(scanf("%d",&n),n!=0)
      {for(int i=1;i<=n;i++)
           scanf("%s",truck[i]);
        memset(array,0,sizeof(array));
        for(int i=1;i<=n;i++)
             for(int j=1;j<=n;j++)
               { if(i==j || array[i][j])
                    continue;
                  sum=0;  
                  for(int k=0;k<7;k++)
                      if(truck[i][k]!=truck[j][k])
                         sum++;
                   array[i][j]=sum;
                   array[j][i]=sum;
                }  
      total=0;
      prim(n);
      printf("The highest possible quality is 1/%d.\n",total);

  }  
  return 0;
}    

铚楃墰 2008-11-27 00:13 鍙戣〃璇勮
]]>
POJ 1258 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67946.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:11:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67946.htmlhttp://www.shnenglu.com/apple365/comments/67946.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67946.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67946.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67946.html//姹楋紝妯℃澘鐪熺殑寰堢埥
//鍙槸紼嶇◢鏀逛簡涓涓嬪墠涓棰樼殑浠g爜錛屾渶灝忕敓鎴愭爲闂
#include<iostream>
using namespace std;
int  array[101][101],total;
int  used[101],dis[101];
void prim(int n)
{ int v,min;
  for(int i=1;i<=n;i++)
      {used[i]=0;
       dis[i]=array[1][i];
       }
       used[1]=1;
      while(true)
        {  min=INT_MAX;
            v=0;
            for(int i=1;i<=n;i++)
               if(!used[i] && dis[i]<min)
                 { min=dis[i];
                   v=i;
                  }
            if(v==0)
               break;
           total=total+min;
           used[v]=1;
           for(int j =1;j<=n;j++)
               if(!used[j] && dis[j]>array[v][j])
                  dis[j]=array[v][j];
        }  
  }                  

int main()
{int n,sum;
      freopen("in.txt","r",stdin);
      freopen("out.txt","w",stdout);
while((scanf("%d",&n))!=EOF)
      {for(int i=1;i<=n;i++)
           for(int j=1;j<=n;j++)
               scanf("%d",&array[i][j]);
      total=0;
      prim(n);
      printf("%d\n",total);
}  

  return 0;
}    

铚楃墰 2008-11-27 00:11 鍙戣〃璇勮
]]>
POJ 2485 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67945.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:09:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67945.htmlhttp://www.shnenglu.com/apple365/comments/67945.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67945.html#Feedback0http://www.shnenglu.com/apple365/comments/commentRss/67945.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67945.html//faint ,澶睏浜嗭紝浠婂ぉ涓婂崍鐢╬rim姘村埌鎵嬭蔣
#include<iostream>
using namespace std;
int  array[501][501],total;
int  used[501],dis[501];
void prim(int n)
{ int v,min;
  for(int i=1;i<=n;i++)
      {used[i]=0;
       dis[i]=array[1][i];
       }
       used[1]=1;
      while(true)
        {  min=INT_MAX;
            v=0;
            for(int i=1;i<=n;i++)
               if(!used[i] && dis[i]<min)
                 { min=dis[i];
                   v=i;
                  }
            if(v==0)
               break;
           if(min>total)
           total=min;
           used[v]=1;
           for(int j =1;j<=n;j++)
               if(!used[j] && dis[j]>array[v][j])
                  dis[j]=array[v][j];
        }  
  }                  

int main()
{int m,n,sum;
      freopen("in.txt","r",stdin);
      freopen("out.txt","w",stdout);
      scanf("%d",&m);
     while(m--)
      { scanf("%d",&n);
        for(int i=1;i<=n;i++)
           for(int j=1;j<=n;j++)
               scanf("%d",&array[i][j]);
      total=0;
      prim(n);
      printf("%d\n",total);
}  

  return 0;
}

铚楃墰 2008-11-27 00:09 鍙戣〃璇勮
]]>
POJ 3295 C++ 錛堝浘璁猴級http://www.shnenglu.com/apple365/archive/2008/11/27/67943.html铚楃墰铚楃墰Wed, 26 Nov 2008 16:07:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/27/67943.htmlhttp://www.shnenglu.com/apple365/comments/67943.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/27/67943.html#Feedback1http://www.shnenglu.com/apple365/comments/commentRss/67943.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67943.html#include<iostream>
using namespace std;
typedef  struct Node
{ int u,v,t;
}Node;
Node e[25000];
int n,m,w,en;
bool bellmanford()
{ bool flag;
  int dis[1001];
  for(int i=0;i<n-1;i++)
      { flag=false;
        for(int j=0;j<en;j++)
           if(dis[e[j].v]>dis[e[j].u]+e[j].t)
               {dis[e[j].v]=dis[e[j].u]+e[j].t;
                 flag=true;
                 }
           if(!flag)
              break;
        }             
    for(int i=0;i<en;i++)
        if( dis[e[i].v]>dis[e[i].u]+e[i].t)
                return true;
   
    return false;             
}    

int main()
{int Case ,u,v,t;
 freopen("in.txt","r",stdin);
 freopen("out.txt","w",stdout);
 scanf("%d",&Case);
 while(Case--)
      { scanf("%d%d%d",&n,&m,&w);
        en=0;
        for(int i=1;i<=m;i++)
            {  scanf("%d%d%d",&u,&v,&t);
               e[en].u=u;
               e[en].v=v;
               e[en++].t=t;
               e[en].u=v;
               e[en].v=u;
               e[en++].t=t;
             }
         for(int i=1;i<=w;i++)
            {  scanf("%d%d%d",&u,&v,&t);
               e[en].u=u;
               e[en].v=v;
               e[en++].t=-t;
            }
         
          if(bellmanford())
             puts("YES");
         else
             puts("NO");
   }
   return 0;                   
}   

Bellman-Ford 綆楁硶鍙婂叾浼樺寲

Bellman-Ford 綆楁硶鍙婂叾浼樺寲

Bellman-Ford綆楁硶涓庡彟涓涓潪甯歌憲鍚嶇殑Dijkstra綆楁硶涓鏍鳳紝鐢ㄤ簬姹傝В鍗曟簮鐐規渶鐭礬寰勯棶棰樸?/span>Bellman-ford綆楁硶闄や簡鍙眰瑙h竟鏉冨潎闈炶礋鐨勯棶棰樺錛岃繕鍙互瑙e喅瀛樺湪璐熸潈杈圭殑闂錛堟剰涔夋槸浠涔堬紝濂藉ソ鎬濊冿級錛岃?/span>Dijkstra綆楁硶鍙兘澶勭悊杈規潈闈炶礋鐨勯棶棰橈紝鍥犳 Bellman-Ford綆楁硶鐨勯傜敤闈㈣騫挎硾涓浜涖備絾鏄紝鍘熷鐨?/span>Bellman-Ford綆楁硶鏃墮棿澶嶆潅搴︿負 O錛?/span>VE錛?/span>,姣?/span>Dijkstra綆楁硶鐨勬椂闂村鏉傚害楂橈紝鎵浠ュ父甯歌浼楀鐨勫ぇ瀛︾畻娉曟暀縐戜功鎵蹇界暐錛屽氨榪炵粡鍏哥殑銆婄畻娉曞璁恒嬩篃鍙粙緇嶄簡鍩烘湰鐨?/span>Bellman-Ford綆楁硶錛屽湪鍥藉唴甯歌鐨勫熀鏈俊鎭濂ヨ禌鏁欐潗涓篃鍧囨湭鎻愬強錛屽洜姝よ綆楁硶鐨勭煡鍚嶅害涓庤鎺屾彙搴﹂兘涓嶅Dijkstra綆楁硶銆備簨瀹炰笂錛屾湁澶氱褰㈠紡鐨?/span>Bellman-Ford綆楁硶鐨勪紭鍖栧疄鐜般傝繖浜涗紭鍖栧疄鐜板湪鏃墮棿鏁堢巼涓婂緱鍒扮浉褰撴彁鍗囷紝渚嬪榪戜竴涓ゅ勾琚儹鎹х殑SPFA錛?/span>Shortest-Path Faster Algoithm 鏇村揩鐨勬渶鐭礬寰勭畻娉曪級綆楁硶鐨勬椂闂存晥鐜囩敋鑷崇敱浜?/span>Dijkstra綆楁硶錛屽洜姝ゆ垚涓轟俊鎭濂ヨ禌閫夋墜緇忓父璁ㄨ鐨勮瘽棰樸傜劧鑰岋紝闄愪簬璧勬枡鍖箯錛屾湁鍏?/span>Bellman-Ford綆楁硶鐨勮澶氶棶棰樺父甯稿洶鎵板ゥ璧涢夋墜銆傚錛氳綆楁硶鍊煎緱鎺屾彙涔堬紵鎬庢牱鐢ㄧ紪紼嬭璦鍏蜂綋瀹炵幇錛熸湁鍝簺浼樺寲錛熶笌SPFA綆楁硶鏈夊叧緋諱箞錛熸湰鏂囪瘯鍥懼Bellman-Ford綆楁硶鍋氫竴涓瘮杈冨叏闈㈢殑浠嬬粛銆傜粰鍑哄嚑縐嶅疄鐜扮▼搴忥紝浠庣悊璁哄拰瀹炴祴涓ゆ柟闈㈠垎鏋愪粬浠殑鏃墮棿澶嶆潅搴︼紝渚涘ぇ瀹跺湪澶囨垬鐪侀夊拰鍚庣畫鐨?/span>noi鏃跺弬鑰冦?/span>

Bellman-Ford綆楁硶鎬濇兂

Bellman-Ford綆楁硶鑳藉湪鏇存櫘閬嶇殑鎯呭喌涓嬶紙瀛樺湪璐熸潈杈癸級瑙e喅鍗曟簮鐐規渶鐭礬寰勯棶棰樸傚浜庣粰瀹氱殑甯︽潈錛堟湁鍚戞垨鏃犲悜錛夊浘 G=錛?/span>V,E錛夛紝鍏舵簮鐐逛負s錛屽姞鏉冨嚱鏁?/span> w鏄?/span> 杈歸泦 E 鐨勬槧灝勩傚鍥?/span>G榪愯Bellman-Ford綆楁硶鐨勭粨鏋滄槸涓涓竷灝斿鹼紝琛ㄦ槑鍥句腑鏄惁瀛樺湪鐫涓涓粠婧愮偣s鍙揪鐨勮礋鏉冨洖璺?/span>鑻ヤ笉瀛樺湪榪欐牱鐨勫洖璺紝綆楁硶灝嗙粰鍑轟粠婧愮偣s鍒?/span> 鍥?/span>G鐨勪換鎰忛《鐐?/span>v鐨勬渶鐭礬寰?/span>d[v]銆?/span>

Bellman-Ford綆楁硶嫻佺▼鍒嗕負涓変釜闃舵錛?/span>

錛?錛?span style="FONT: 7pt Times New Roman">    鍒濆鍖栵細灝嗛櫎婧愮偣澶栫殑鎵鏈夐《鐐圭殑鏈鐭窛紱諱及璁″?/span> d[v] ←+∞, d[s] ←0;

錛?錛?span style="FONT: 7pt Times New Roman">    榪唬姹傝В錛氬弽澶嶅杈歸泦E涓殑姣忔潯杈硅繘琛屾澗寮涙搷浣滐紝浣垮緱欏剁偣闆哣涓殑姣忎釜欏剁偣v鐨勬渶鐭窛紱諱及璁″奸愭閫艱繎鍏舵渶鐭窛紱伙紱錛堣繍琛寍v|-1嬈★級

錛?錛?span style="FONT: 7pt Times New Roman">    媯楠岃礋鏉冨洖璺細鍒ゆ柇杈歸泦E涓殑姣忎竴鏉¤竟鐨勪袱涓鐐規槸鍚︽敹鏁涖傚鏋滃瓨鍦ㄦ湭鏀舵暃鐨勯《鐐癸紝鍒欑畻娉曡繑鍥?/span>false錛岃〃鏄庨棶棰樻棤瑙o紱鍚﹀垯綆楁硶榪斿洖true錛屽茍涓斾粠婧愮偣鍙揪鐨勯《鐐?/span>v鐨勬渶鐭窛紱諱繚瀛樺湪 d[v]涓?/span>

綆楁硶鎻忚堪濡備笅錛?/span>

Bellman-Ford(G,w,s) 錛?/span>boolean   //鍥?/span>G 錛岃竟闆?/span> 鍑芥暟 w 錛?/span>s涓烘簮鐐?/span>

1        for each vertex v ∈ V錛圙錛?do        //鍒濆鍖?span style="mso-spacerun: yes"> 1闃舵

2            d[v] ←+∞

3        d[s] ←0;                             //1闃舵緇撴潫

4        for i=1 to |v|-1 do               //2闃舵寮濮嬶紝鍙岄噸寰幆銆?/span>

5           for each edge錛坲,v錛?∈E(G) do //杈歸泦鏁扮粍瑕佺敤鍒幫紝絀蜂婦姣忔潯杈廣?/span>

6              If d[v]> d[u]+ w(u,v) then      //鏉懼紱鍒ゆ柇

7                 d[v]=d[u]+w(u,v)               //鏉懼紱鎿嶄綔   2闃舵緇撴潫

8        for each edge錛坲,v錛?∈E(G) do

9            If d[v]> d[u]+ w(u,v) then

10            Exit false

11    Exit true

 涓嬮潰緇欏嚭鎻忚堪鎬ц瘉鏄庯細

   棣栧厛鎸囧嚭錛屽浘鐨勪換鎰忎竴鏉℃渶鐭礬寰勬棦涓嶈兘鍖呭惈璐熸潈鍥炶礬錛屼篃涓嶄細鍖呭惈姝f潈鍥炶礬錛屽洜姝ゅ畠鏈澶氬寘鍚?/span>|v|-1鏉¤竟銆?/span>

   鍏舵錛屼粠婧愮偣s鍙揪鐨勬墍鏈夐《鐐瑰鏋?/span> 瀛樺湪鏈鐭礬寰勶紝鍒欒繖浜涙渶鐭礬寰勬瀯鎴愪竴涓互s涓烘牴鐨勬渶鐭礬寰勬爲銆?/span>Bellman-Ford綆楁硶鐨勮凱浠f澗寮涙搷浣滐紝瀹為檯涓婂氨鏄寜欏剁偣璺濈s鐨勫眰嬈★紝閫愬眰鐢熸垚榪欐5鏈鐭礬寰勬爲鐨勮繃紼嬨?/span>

鍦ㄥ姣忔潯杈硅繘琛?span>1閬嶆澗寮涚殑鏃跺欙紝鐢熸垚浜嗕粠s鍑哄彂錛屽眰嬈¤嚦澶氫負1鐨勯偅浜涙爲鏋濄備篃灝辨槸璇達紝鎵懼埌浜嗕笌s鑷沖鏈?鏉¤竟鐩歌仈鐨勯偅浜涢《鐐圭殑鏈鐭礬寰勶紱瀵規瘡鏉¤竟榪涜絎?閬嶆澗寮涚殑鏃跺欙紝鐢熸垚浜嗙2灞傛鐨勬爲鏋濓紝灝辨槸璇存壘鍒頒簡緇忚繃2鏉¤竟鐩歌繛鐨勯偅浜涢《鐐圭殑鏈鐭礬寰?#8230;…銆傚洜涓烘渶鐭礬寰勬渶澶氬彧鍖呭惈|v|-1 鏉¤竟錛屾墍浠ワ紝鍙渶瑕佸驚鐜瘄v|-1 嬈°?/span>

姣忓疄鏂戒竴嬈℃澗寮涙搷浣滐紝鏈鐭礬寰勬爲涓婂氨浼氭湁涓灞傞《鐐硅揪鍒板叾鏈鐭窛紱伙紝姝ゅ悗榪欏眰欏剁偣鐨勬渶鐭窛紱誨煎氨浼氫竴鐩翠繚鎸佷笉鍙橈紝涓嶅啀鍙楀悗緇澗寮涙搷浣滅殑褰卞搷銆傦紙浣嗘槸錛屾瘡嬈¤繕瑕佸垽鏂澗寮涳紝榪欓噷嫻垂浜嗗ぇ閲忕殑鏃墮棿錛屾庝箞浼樺寲錛熷崟綰殑浼樺寲鏄惁鍙錛燂級

濡傛灉娌℃湁璐熸潈鍥炶礬錛岀敱浜庢渶鐭礬寰勬爲鐨勯珮搴︽渶澶氬彧鑳芥槸|v|-1錛屾墍浠ユ渶澶氱粡榪噟v|-1閬嶆澗寮涙搷浣滃悗錛屾墍鏈変粠s鍙揪鐨勯《鐐瑰繀灝嗘眰鍑烘渶鐭窛紱匯傚鏋?d[v]浠嶄繚鎸?+∞錛屽垯琛ㄦ槑浠巗鍒皏涓嶅彲杈俱?/span>

濡傛灉鏈夎礋鏉冨洖璺紝閭d箞絎?span> |v|-1 閬嶆澗寮涙搷浣滀粛鐒朵細鎴愬姛錛岃繖鏃訛紝璐熸潈鍥炶礬涓婄殑欏剁偣涓嶄細鏀舵暃銆?/span>

渚嬪瀵逛簬涓婂浘錛岃竟涓婃柟妗嗕腑鐨勬暟瀛椾唬琛ㄦ潈鍊鹼紝欏剁偣A,B,C涔嬮棿瀛樺湪璐熸潈鍥炶礬銆係鏄簮鐐癸紝欏剁偣涓暟瀛楄〃紺鴻繍琛孊ellman-Ford綆楁硶鍚庡悇鐐圭殑鏈鐭窛紱諱及璁″箋?/span>

姝ゆ椂d[a]鐨勫間負1錛屽ぇ浜巇[c]+w(c,a)鐨勫?2錛岀敱姝[a]鍙互鏉懼紱涓?2錛岀劧鍚巇[b]鍙堝彲浠ユ澗寮涗負-5,d[c]鍙堝彲浠ユ澗寮涗負-7.涓嬩竴涓懆鏈燂紝d[a]鍙堝彲浠ユ洿鏂頒負鏇村皬鐨勫鹼紝榪欎釜榪囩▼姘歌繙涓嶄細緇堟銆傚洜姝わ紝鍦ㄨ凱浠f眰瑙f渶鐭礬寰勯樁孌電粨鏉熷悗錛屽彲浠ラ氳繃媯楠岃竟闆咵鐨勬瘡鏉¤竟(u,v)鏄惁婊¤凍鍏崇郴寮?span style="mso-spacerun: yes"> d[v]> d[u]+ w(u,v) 鏉ュ垽鏂槸鍚﹀瓨鍦ㄨ礋鏉冨洖璺?br>
  

浜屻佸熀鏈?/span> Bellman-Ford 綆楁硶鐨?/span> pascal瀹炵幇銆?/span>

   瑙?/span> bellmanford.pas 鏂囦歡銆?/span>

涓夈佸熀鏈畻娉曚箣涓婄殑浼樺寲銆?/span>

鍒嗘瀽 Bellman-Ford綆楁硶錛屼笉闅劇湅鍑猴紝澶栧眰寰幆錛堣凱浠f鏁幫級|v|-1瀹為檯涓婂彇寰楁槸涓婇檺銆傜敱涓婇潰瀵圭畻娉曟紜х殑璇佹槑鍙煡錛岄渶瑕佺殑榪唬閬嶆暟絳変簬鏈鐭礬寰勬爲鐨勯珮搴︺傚鏋滀笉瀛樺湪璐熸潈鍥炶礬錛屽鉤鍧囨儏鍐典笅鐨勬渶鐭礬寰勬爲鐨勯珮搴﹀簲璇ヨ繙榪滃皬浜?/span> |v|-1錛屽湪姝ゆ儏鍐典笅錛屽浣欐渶鐭礬寰勬爲楂樼殑榪唬閬嶆暟灝辨槸鏃墮棿涓婄殑嫻垂錛岀敱姝わ紝鍙互渚濇鏉ュ疄鏂戒紭鍖栥?/span>

浠庣粏鑺備笂鍒嗘瀽錛屽鏋滃湪鏌愪竴閬嶈凱浠d腑錛岀畻娉曟弿榪頒腑絎?/span>7琛岀殑鏉懼紱鎿嶄綔鏈墽琛岋紝璇存槑璇ラ亶榪唬鎵鏈夌殑杈歸兘娌℃湁琚澗寮涖傚彲浠ヨ瘉鏄庯紙鎬庝箞璇佹槑錛燂級錛氳嚦姝ゅ悗錛岃竟闆嗕腑鎵鏈夌殑杈歸兘涓嶉渶瑕佸啀琚澗寮涳紝浠庤屽彲浠ユ彁鍓嶇粨鏉熻凱浠h繃紼嬨傝繖鏍鳳紝浼樺寲鐨勬帾鏂藉氨闈炲父綆鍗曚簡銆?/span>

璁懼畾涓涓竷灝斿瀷鏍囧織鍙橀噺 relaxed錛屽垵鍊間負false銆傚湪鍐呭眰寰幆涓紝浠呭綋鏈夎竟琚垚鍔熸澗寮涙椂錛屽皢 relaxed 璁劇疆涓?/span>true銆傚鏋滄病鏈夎竟琚澗寮涳紝鍒欐彁鍓嶇粨鏉熷灞傚驚鐜傝繖涓鏀硅繘鍙互鏋佸ぇ鐨勫噺灝戝灞傚驚鐜殑榪唬嬈℃暟銆備紭鍖栧悗鐨?/span> bellman-ford鍑芥暟濡備笅銆?/span>

function bellmanford(s:longint):boolean;

     begin

        for i:=1 to nv do

          d[i]:=max;

        d[s]:=0;

        for i:=1 to nv-1 do

         begin

         relaxed:=false;

          for j:=1 TO ne do

          if(d[edges[j].s]<>max) and (d[edges[j].e]>d[edges[j].s]+edges[j].w)

               then begin

d[edges[j].e]:=d[edges[j].s]+edges[j].w ;

relaxed:=true;

                         end;

                if not relaxed then break;

end;

        for i:=1 to ne do

          if d[edges[j].e]>d[edges[j].s]+edges[j].w then exit(false);

        exit(true);

     end;

榪欐牱鐪嬩技騫沖嚒鐨勪紭鍖栵紝浼氭湁鎬庢牱鐨勬晥鏋滃憿錛熸湁鐮旂┒琛ㄦ槑錛屽浜庨殢鏈虹敓鎴愭暟鎹殑騫沖潎鎯呭喌錛屾椂闂村鏉傚害鐨勪及綆楀叕寮忎負

1.13|E|                    if |E|<|V|

0.95*|E|*lg|V|              if |E|>|V|

浼樺寲鍚庣殑綆楁硶鍦ㄥ鐞嗘湁璐熸潈鍥炶礬鐨勬祴璇曟暟鎹椂錛岀敱浜庢瘡嬈¢兘浼氭湁杈硅鏉懼紱錛屾墍浠?/span>relaxed姣忔閮戒細琚疆涓?/span>true錛屽洜鑰屼笉鍙兘鎻愬墠緇堟澶栧眰寰幆銆傝繖瀵瑰簲浜嗘渶鍧忔儏鍐碉紝鍏舵椂闂村鏉傚害浠嶆棫涓?/span>O(VE)銆?/span>

浼樺寲鍚庣殑綆楁硶鐨勬椂闂村鏉傚害宸茬粡鍜岀敤浜屽弶鍫嗕紭鍖栫殑Dijkstra綆楁硶鐩歌繎浜嗭紝鑰岀紪鐮佺殑澶嶆潅紼嬪害榪滄瘮鍚庤呬綆銆傚姞涔?/span>Bellman-Ford綆楁硶鑳藉鐞嗗悇縐嶈竟鍊兼潈鎯呭喌涓嬬殑鏈鐭礬寰勯棶棰橈紝鍥犺岃繕鏄潪甯鎬紭縐鐨勩?/span>Usaco3.2.6 鐨勭▼搴忚bellmanford_1.pas

鍥涖?/span>SPFA 綆楁硶

   SPFA鏄洰鍓嶇浉褰撲紭縐鐨勬眰鏈鐭礬寰勭殑綆楁硶錛屽煎緱鎴戜滑鎺屾彙銆?/span>

   SPFA瀵?/span>Bellman-Ford綆楁硶浼樺寲鐨勫叧閿箣澶勫湪浜庢剰璇嗗埌錛?span style="COLOR: #ff6600">鍙湁閭d簺鍦ㄥ墠涓閬嶆澗寮涗腑鏀瑰彉浜嗚窛紱諱及璁″肩殑鐐癸紝鎵嶅彲鑳藉紩璧蜂粬浠殑閭繪帴鐐圭殑璺濈浼拌鍊肩殑鏀瑰彉銆?/span>鍥犳錛岀敤涓涓厛榪涘厛鍑虹殑闃熷垪鏉ュ瓨鏀捐鎴愬姛鏉懼紱鐨勯《鐐廣傚垵濮嬫椂錛屾簮鐐?/span>s鍏ラ槦銆傚綋闃熷垪涓嶄負絀烘椂錛屽彇鍑哄棣栭《鐐癸紝瀵瑰畠鐨勯偦鎺ョ偣榪涜鏉懼紱銆傚鏋滄煇涓偦鎺ョ偣鏉懼紱鎴愬姛錛屼笖璇ラ偦鎺ョ偣涓嶅湪闃熷垪涓紝鍒欏皢鍏跺叆闃熴傜粡榪囨湁闄愭鐨勬澗寮涙搷浣滃悗錛岄槦鍒楀皢涓虹┖錛岀畻娉曠粨鏉熴?/span>SPFA綆楁硶鐨勫疄鐜幫紝闇瑕佺敤鍒頒竴涓厛榪涘厛鍑虹殑闃熷垪 queue 鍜屼竴涓寚紺洪《鐐規槸鍚﹀湪闃熷垪涓殑 鏍囪鏁扮粍 mark銆備負浜嗘柟渚挎煡鎵炬煇涓《鐐圭殑閭繪帴鐐癸紝鍥鵑噰鐢ㄤ復鐣岃〃瀛樺偍銆?/span>

   紼嬪簭瀛樺偍鍦?/span> spfa.pas涓備互usaco 3.2.6 璇曢2涓轟緥銆傜敤閭繪帴琛ㄥ啓鐨勭▼搴忋?/span>

   闇瑕佹敞鎰忕殑鏄細浠呭綋鍥句笉瀛樺湪璐熸潈鍥炶礬鏃訛紝SPFA鑳芥甯稿伐浣溿傚鏋滃浘瀛樺湪璐熸潈鍥炶礬錛岀敱浜庤礋鏉冨洖璺笂鐨勯《鐐規棤娉曟敹鏁涳紝鎬繪湁欏剁偣鍦ㄥ叆闃熷拰鍑洪槦寰榪旓紝闃熷垪鏃犳硶涓虹┖錛岃繖縐嶆儏鍐典笅SPFA鏃犳硶姝e父緇撴潫銆?/span>

鍒ゆ柇璐熸潈鍥炶礬鐨?/span>鏂規寰堝錛屼笘闂存祦浼犳渶騫跨殑鏄褰曟瘡涓粨鐐硅繘闃熸鏁幫紝瓚呰繃|V|嬈¤〃紺烘湁璐熸潈

榪樻湁涓縐嶆柟娉曚負璁板綍榪欎釜緇撶偣鍦ㄨ礬寰勪腑澶勪簬鐨勪綅緗紝ord[i]錛屾瘡嬈℃洿鏂扮殑鏃跺?/span>ord[i]=ord[x]+1錛岃嫢瓚呰繃|V|鍒欒〃紺烘湁璐熷湀.....

鍏朵粬鏂規硶榪樻湁寰堝錛屾垜鍙嶅掕寰楁祦浼犳渶騫跨殑鏂規硶鏄渶鎱㈢殑.......

鍏充簬SPFA鐨勬椂闂村鏉傚害錛屼笉濂藉噯紜及璁★紝涓鑸涓烘槸 O錛?/span>kE錛夛紝k鏄父鏁?/span>

浜斻佹椂闂存晥鐜囧疄嫻?/span>

涓婅堪浠嬬粛鐨?/span>Bellman-Ford綆楁硶鍙婁袱縐嶇殑浼樺寲錛屽彧鏄湪鐞嗚涓婂垎鏋愪簡鏃墮棿澶嶆潅搴︼紝鐢ㄥ疄闄呯殑鏁版嵁嫻嬭瘯錛屼細鏈変粈涔堢粨鏋滃憿錛熶負姝わ紝鎴戜滑閫夋嫨 usaco 3.2.6銆?/span>

Spfa鐨勬椂闂存晥鐜囪繕鏄緢楂樼殑銆傚茍涓?/span>spfa鐨勭紪紼嬪鏉傚害瑕佹瘮Dijksta+heap浼樺寲瑕佸ソ鐨勫銆?/span>

鍏佺粨璁?/span>

緇忚繃浼樺寲Bellman-Ford綆楁硶鏄潪甯鎬紭鍖栫殑姹傚崟婧愭渶鐭礬寰勭殑綆楁硶錛?/span>SPFA鏃墮棿鏁堢巼瑕佷紭浜庣涓縐嶄紭鍖栧艦寮忥紝浣嗙涓縐嶄紭鍖栧艦寮忕殑緙栫爜澶嶆潅搴︿綆浜?/span>SPFA銆備袱縐嶄紭鍖栧艦寮忕殑緙栫▼澶嶆潅搴﹂兘浣庝簬Dijkstra綆楁硶銆傚鏋滃湪鍒ゆ柇鏄惁瀛樺湪璐熸潈鍥炶礬錛屾帹鑽愪嬌鐢ㄧ涓縐嶄紭鍖栧艦寮忥紝鍚﹀垯鎺ㄨ崘浣跨敤SPFA銆?/span>



铚楃墰 2008-11-27 00:07 鍙戣〃璇勮
]]>
POJ 1961 C++ 錛圞MP錛?/title><link>http://www.shnenglu.com/apple365/archive/2008/11/26/67863.html</link><dc:creator>铚楃墰</dc:creator><author>铚楃墰</author><pubDate>Tue, 25 Nov 2008 17:13:00 GMT</pubDate><guid>http://www.shnenglu.com/apple365/archive/2008/11/26/67863.html</guid><wfw:comment>http://www.shnenglu.com/apple365/comments/67863.html</wfw:comment><comments>http://www.shnenglu.com/apple365/archive/2008/11/26/67863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/apple365/comments/commentRss/67863.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/apple365/services/trackbacks/67863.html</trackback:ping><description><![CDATA[#include<iostream> <wbr><br>using namespace std; <wbr><br>int n,next[1000008]; <wbr><br>char s[1000008]; <wbr><br>void Get_next() <wbr><br>{int j,k; <wbr><br>j=1; <wbr><br>k=0; <wbr><br>next[1]=0; <wbr><br>while(j<=n+1) <wbr><br>       { if(k==0 || s[j]==s[k]) <wbr><br>            { j++; <wbr><br>              k++; <wbr><br>              next[j]=k; <wbr><br>             } <wbr><br>          else <wbr><br>             k=next[k]; <wbr><br>         } <wbr><br>} <wbr><br>int main() <wbr><br>{ int i,cnt,k; <wbr><br>   freopen("in.txt","r",stdin); <wbr><br>   freopen("out.txt","w",stdout); <wbr><br>   k=1; <wbr><br>  while(scanf("%d\n",&n),n!=0) <wbr><br>         { for(i=1;i<=n;i++) <wbr><br>                s[i]=getchar(); <wbr><br>           s[i]='#'; <wbr><br>           Get_next(); <wbr><br>           printf("Test case #%d\n",k++); <wbr><br>           for(i=2;i<=n;i++) <wbr><br>                if(i%(i+1-next[i+1])==0) <wbr><br>                    { cnt=i/(i+1-next[i+1]); <wbr><br>                      if(cnt!=1) <wbr><br>                      printf("%d %d\n",i,cnt); <wbr><br>                     } <wbr><br><br>        printf("\n");     <wbr><br>     } <wbr><br>   return 0; <wbr><br>}             <br><br>璇ラ鐨勯鎰忔槸榪欐牱鐨勶紝緇欒嫢騫蹭釜瀛楃涓詫紝鍒ゆ柇璇ュ瓧絎︿覆鐨勫墠n浣嶆渶澶氶噸澶嶄簡鍑犳錛屾瘮濡傦紝緇檃babab錛岀粨鏋滄槸鍓?浣嶉噸澶嶄簡2嬈★紝鍓?浣嶉噸澶嶄簡3嬈★紝蹇界暐閲嶅涓嬈$殑鎯呭喌.鐜板湪鎴戜滑灝嗘敞鎰忓姏鏀懼湪涓涓粰瀹氱殑瀛楃涓查噸澶嶄簡澶氬皯嬈★紝鐒跺悗鍋氫竴涓驚鐜氨鍙互姹傚嚭鎵鏈夌殑緇撴灉銆?wbr><wbr><br>鎴戜滑瑕佹牴鎹甼mp綆楁硶涓殑next鍑芥暟鏉ヨВ鍐寵繖涓棶棰橈紝浠babab涓轟緥鍔犱互璇存槑錛?wbr><wbr><br>String錛歛babab<wbr><wbr><br>Next錛?0112345<wbr><wbr><br>榪欓噷鏍規嵁鍚庨潰鐨勯渶瑕佸璁$畻浜嗕竴浣峮ext鍊箋?wbr><wbr><br>鎴戜滑鐢╝babab鍗充綔涓轟富涓叉湁浣滀負妯″紡涓叉潵榪涜鍖歸厤錛屽亣璁懼尮閰嶅埌絎?涓烘椂涓嶅尮閰嶄簡(涓嬫爣涓?寮濮?錛岃鏍規嵁next[7](=5)鐨勫肩戶緇尮閰嶏細<wbr><wbr><br>ababab*<wbr><br>ababab&<wbr><br>ababab*<wbr><br>ababab<wbr><br>榪欐牱錛屾垜浠敤錛坙ength+1錛?next[length+1]灝辨槸瀛楃涓插悜鍙崇Щ鍔ㄧ殑浣嶆暟錛屽湪璇ヤ緥涓負7-5=2.鐒跺悗鐢ㄦ葷殑闀垮害闄や互榪欎釜鍚戝彸縐誨姩鐨勪綅鏁幫紝濡傛灉鑳介櫎灝界殑璇濓紝緇撴灉灝辨槸閲嶅鐨勬鏁幫紝鍚﹀垯閲嶅鐨勬鏁頒負1<span style="COLOR: #000000">   </span>                <img src ="http://www.shnenglu.com/apple365/aggbug/67863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/apple365/" target="_blank">铚楃墰</a> 2008-11-26 01:13 <a href="http://www.shnenglu.com/apple365/archive/2008/11/26/67863.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>POJ 2752 C++ 錛圞MP錛?/title><link>http://www.shnenglu.com/apple365/archive/2008/11/26/67862.html</link><dc:creator>铚楃墰</dc:creator><author>铚楃墰</author><pubDate>Tue, 25 Nov 2008 17:08:00 GMT</pubDate><guid>http://www.shnenglu.com/apple365/archive/2008/11/26/67862.html</guid><wfw:comment>http://www.shnenglu.com/apple365/comments/67862.html</wfw:comment><comments>http://www.shnenglu.com/apple365/archive/2008/11/26/67862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/apple365/comments/commentRss/67862.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/apple365/services/trackbacks/67862.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">#include<iostream> <wbr><br>#include<string> <wbr><br>using namespace std; <wbr><br>int n,next[400008],result[400008];; <wbr><br>char s[400008],t[400008]; <wbr><br>void Get_next() <wbr><br>{int j,k; <wbr><br>j=1; <wbr><br>k=0; <wbr><br>next[1]=0; <wbr><br>while(j<=n+1) <wbr><br>       { if(k==0 || s[j]==s[k]) <wbr><br>            { j++; <wbr><br>              k++; <wbr><br>              next[j]=k; <wbr><br>             } <wbr><br>          else <wbr><br>             k=next[k]; <wbr><br>         } <wbr><br>} <wbr><br>int main() <wbr><br>{ int i,k; <wbr><br>   freopen("in.txt","r",stdin); <wbr><br>   freopen("out.txt","w",stdout); <wbr><br>   while(scanf("%s",t)!=EOF) <wbr><br>         {n=strlen(t); <wbr><br>          for(i=1;i<=n;i++) <wbr><br>                s[i]=t[i-1]; <wbr><br><br>           s[i]='#'; <wbr><br>           Get_next(); <wbr><br>           k=0; <wbr><br>           result[k++]=n+1; <wbr><br>           i=n+1; <wbr><br>           while(i!=1) <wbr><br>                { if(next[i]!=1) <wbr><br>                     result[k++]=next[i]; <wbr><br>                  i=next[i]; <wbr><br>                 } <wbr><br><br>          for(i=k-1;i>0;i--) <wbr><br>              printf("%d ",result[i]-1); <wbr><br><br>         printf("%d\n",result[i]-1);                     <wbr><br>     } <wbr><br><br>   return 0; <wbr><br>}</span>                          <img src ="http://www.shnenglu.com/apple365/aggbug/67862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/apple365/" target="_blank">铚楃墰</a> 2008-11-26 01:08 <a href="http://www.shnenglu.com/apple365/archive/2008/11/26/67862.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>POJ 1694 C++ 錛堟帓搴忥級http://www.shnenglu.com/apple365/archive/2008/11/26/67860.html铚楃墰铚楃墰Tue, 25 Nov 2008 17:01:00 GMThttp://www.shnenglu.com/apple365/archive/2008/11/26/67860.htmlhttp://www.shnenglu.com/apple365/comments/67860.htmlhttp://www.shnenglu.com/apple365/archive/2008/11/26/67860.html#Feedback1http://www.shnenglu.com/apple365/comments/commentRss/67860.htmlhttp://www.shnenglu.com/apple365/services/trackbacks/67860.html//涓嶄細鏁詫紝鏄伓鐪嬭繃鍒漢鐨勭粨棰樻姤鍛婂悗鏁茬殑錛屽涔犱笅
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct Node
{ int label;
   int cnt;
   int leaf[200];
};
Node tree[200];
int solve(int i)
{   int  stone[200],result,temp;
    if(tree[i].cnt==0)
       return 1;
     for(int j=0;j<tree[i].cnt;j++)
         stone[j]=solve(tree[i].leaf[j]);

     sort(stone,stone+tree[i].cnt);
     result=stone[tree[i].cnt-1];
     temp=result-1;
     for(int k=tree[i].cnt-2;k>=0;k--)
        { if(temp-stone[k]>=0)
             temp--;
           else
             {result=result+stone[k]-temp;
              temp=stone[k]-1;
              }
         }

       return result;
}
int main()
{ int n,m;
  freopen("in.txt","r",stdin);
  freopen("out.txt","w",stdout);
  scanf("%d",&n);
  while(n--)
       { scanf("%d",&m);
         for(int i=1;i<=m;i++)
             {  scanf("%d%d",&tree[i].label,&tree[i].cnt);
                for(int j=0;j<tree[i].cnt;j++)
                   scanf("%d",&tree[i].leaf[j]);
              }
         printf("%d\n",solve(1));
       }      

   return 0;
}                

铚楃墰 2008-11-26 01:01 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情aⅴ一区二区三区| 国产精品视频导航| 国产精品视频第一区| 精品动漫3d一区二区三区免费| 亚洲电影中文字幕| 亚洲一区二区三区乱码aⅴ| 久久精品国产一区二区三区| 欧美激情精品久久久久久大尺度 | 久久免费视频观看| 欧美日韩色婷婷| 黄色欧美日韩| 国产精品99久久久久久www| 久久免费精品视频| 99精品福利视频| 久久久久久69| 国产精品成人在线| 亚洲欧洲在线观看| 久久高清福利视频| 亚洲精品国产系列| 久久xxxx精品视频| 欧美色欧美亚洲另类二区| 黄色日韩网站| 小黄鸭视频精品导航| 亚洲欧洲在线一区| 久久九九免费| 国产精品久久久99| 亚洲精品在线免费| 久久野战av| 国产精品99久久久久久www| 免费h精品视频在线播放| 国产女主播一区二区三区| 99re视频这里只有精品| 久久久精品午夜少妇| 亚洲色诱最新| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产欧美韩日| 亚洲一区二区在线观看视频| 欧美国产第一页| 欧美在线视屏| 国产美女精品视频免费观看| 一区二区三区日韩欧美| 亚洲高清免费视频| 久久久久久久国产| 国产视频一区在线| 先锋影音网一区二区| 日韩午夜在线视频| 欧美区一区二区三区| 亚洲成人影音| 美女视频黄 久久| 久久国产精品毛片| 国产伦精品一区二区三| 亚洲一区二区三区视频播放| 亚洲免费观看在线观看| 欧美激情一区二区三级高清视频| 亚洲第一偷拍| 久久午夜精品一区二区| 久久爱www| 韩国av一区二区| 久久久伊人欧美| 欧美影院久久久| 国内成+人亚洲| 久久蜜桃av一区精品变态类天堂| 午夜久久电影网| 国产亚洲在线| 久久久久久9999| 久久精品女人天堂| 韩国久久久久| 免费亚洲电影在线| 久热精品在线| 亚洲日本电影在线| 亚洲国产岛国毛片在线| 欧美成人福利视频| av成人免费在线观看| 亚洲精品社区| 欧美性开放视频| 亚洲欧美日韩直播| 午夜精品视频在线观看| 国内久久精品| 欧美电影在线播放| 欧美激情bt| 亚洲一区二区三区四区视频| 亚洲一区中文字幕在线观看| 国产色视频一区| 猛男gaygay欧美视频| 欧美成人首页| 在线亚洲观看| 亚洲欧美日本精品| 一区二区亚洲精品国产| 亚洲福利国产| 国产精品www994| 亚洲视频在线免费观看| 亚洲欧美美女| 怡红院精品视频| 亚洲国产美女| 国产精品扒开腿做爽爽爽视频| 久久国产精品72免费观看| 久久精品国产999大香线蕉| 91久久中文| 亚洲一二三区在线观看| 国产一区二区三区无遮挡| 欧美成人高清| 欧美午夜影院| 久久午夜精品一区二区| 欧美激情中文字幕一区二区| 亚洲免费视频中文字幕| 久久国产天堂福利天堂| 亚洲精品国久久99热| 亚洲视频在线观看一区| 韩国成人福利片在线播放| 亚洲国产日本| 国产乱码精品一区二区三区五月婷 | 嫩模写真一区二区三区三州| 欧美久久精品午夜青青大伊人| 亚洲欧美制服另类日韩| 久久久久国产一区二区三区四区 | 欧美视频一区在线| 久久久久久久91| 欧美美女福利视频| 久久久久88色偷偷免费| 欧美久久精品午夜青青大伊人| 性欧美激情精品| 欧美成人有码| 久久久久久久久一区二区| 欧美日韩国产一区精品一区 | 久久婷婷av| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲精品影院| 欧美亚洲一级| 一区二区高清视频| 久久电影一区| 亚洲欧美日韩成人| 模特精品裸拍一区| 久久高清国产| 欧美午夜影院| 亚洲国产精品成人| 国产原创一区二区| 亚洲天堂av在线免费观看| 亚洲欧洲一区| 久久精品国产亚洲高清剧情介绍| 亚洲先锋成人| 欧美激情视频一区二区三区不卡| 久久午夜羞羞影院免费观看| 国产精品国产自产拍高清av| 亚洲国产合集| 国产日韩欧美二区| 在线亚洲欧美视频| 亚洲麻豆视频| 老司机67194精品线观看| 久久精品视频在线观看| 国产精品久久久91| 亚洲免费成人| 99精品国产福利在线观看免费| 久久久av水蜜桃| 久久久国产一区二区| 国产精品日日摸夜夜添夜夜av| 亚洲日本乱码在线观看| 亚洲国产清纯| 久久天堂成人| 老司机免费视频一区二区三区| 国产欧美精品一区aⅴ影院| 日韩视频免费| 99热这里只有成人精品国产| 欧美99久久| 亚洲第一区中文99精品| 在线观看一区二区视频| 久久av一区| 久热国产精品视频| 国语自产精品视频在线看8查询8| 欧美一区二区日韩| 久久精品视频网| 国产主播一区二区三区| 久久gogo国模啪啪人体图| 久久精品官网| 狠狠色香婷婷久久亚洲精品| 欧美影视一区| 可以看av的网站久久看| 狠狠狠色丁香婷婷综合久久五月| 午夜久久美女| 久久久精品国产免大香伊| 国产一区久久久| 久久精品一区蜜桃臀影院| 久久深夜福利| 在线日本成人| 毛片一区二区三区| 欧美激情一区二区三级高清视频| 亚洲国产视频直播| 美女诱惑一区| 亚洲片区在线| 亚洲一级电影| 国产精品视频久久久| 欧美影院一区| 欧美大片在线观看一区| 亚洲人成在线免费观看| 欧美日韩一区在线播放| 中文无字幕一区二区三区| 欧美一区二区性| 一区二区三区中文在线观看| 免费观看久久久4p| 亚洲精品一区二区三区不| 亚洲一级黄色av|