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

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

前向星+SPFA(轉(zhuǎn)載)

Posted on 2010-10-23 22:02 MiYu 閱讀(918) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM ( 圖 )ACM_資料

MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋    

 

代碼
前向星+SPFA
我是在做USACO的sweet butter時(shí)偶然發(fā)現(xiàn)這個(gè)東西的。。。
這個(gè)算法,簡單的說就是隊(duì)列優(yōu)化的bellman
-ford,利用了每個(gè)點(diǎn)不會(huì)更新次數(shù)太多的特點(diǎn)發(fā)明的此算法(僅為個(gè)人理解=.=
SPFA——Shortest Path Faster Algorithm,它可以在O(kE)的時(shí)間復(fù)雜度內(nèi)求出源點(diǎn)到其他所有點(diǎn)的最短路徑,可以處理負(fù)邊。SPFA的實(shí)現(xiàn)甚至比Dijkstra或者Bellman_Ford還要簡單:
設(shè)Dist代表S到I點(diǎn)的當(dāng)前最短距離,F(xiàn)a代表S到I的當(dāng)前最短路徑中I點(diǎn)之前的一個(gè)點(diǎn)的編號(hào)。開始時(shí)Dist全部為
+∞,只有Dist[S]=0,F(xiàn)a全部為0。
維護(hù)一個(gè)隊(duì)列,里面存放所有需要進(jìn)行迭代的點(diǎn)。初始時(shí)隊(duì)列中只有一個(gè)點(diǎn)S。用一個(gè)布爾數(shù)組記錄每個(gè)點(diǎn)是否處在隊(duì)列中。
每次迭代,取出隊(duì)頭的點(diǎn)v,依次枚舉從v出發(fā)的邊v
->u,設(shè)邊的長度為len,判斷Dist[v]+len是否小于Dist,若小于則改進(jìn)Dist,將Fa記為v,并且由于S到u的最短距離變小了,有可能u可以改進(jìn)其它的點(diǎn),所以若u不在隊(duì)列中,就將它放入隊(duì)尾。這樣一直迭代下去直到隊(duì)列變空,也就是S到所有的最短距離都確定下來,結(jié)束算法。
SPFA 在形式上和寬度優(yōu)先搜索非常類似,不同的是寬度優(yōu)先搜索中一個(gè)點(diǎn)出了隊(duì)列就不可能重新進(jìn)入隊(duì)列,但是SPFA中一個(gè)點(diǎn)可能在出隊(duì)列之后再次被放入隊(duì)列,也就是一個(gè)點(diǎn)改進(jìn)過其它的點(diǎn)之后,過了一段時(shí)間可能本身被改進(jìn),于是再次用來改進(jìn)其它的點(diǎn),這樣反復(fù)迭代下去。設(shè)一個(gè)點(diǎn)用來作為迭代點(diǎn)對(duì)其它點(diǎn)進(jìn)行改進(jìn)的平均次數(shù)為k,有辦法證明對(duì)于通常的情況,k在2左右
前向星優(yōu)化:
不要把前向星想成什么高深莫測(cè)的東西……它其實(shí)就是一種鄰接表的緊縮存儲(chǔ)形式。
為什么叫前向星?因?yàn)樗菍⑦叞凑涨岸它c(diǎn)排序,并用一個(gè)數(shù)組k[i]記錄端點(diǎn)i第一次以左端點(diǎn)出現(xiàn)的位置。這樣,我們就能用O(E)的空間復(fù)雜度存儲(chǔ)下一個(gè)鄰接表,而避免了鏈表或N
^2的龐大空間消耗。
當(dāng)然,實(shí)際上我們并不需要排序:因?yàn)槲覀冎恍枰滥骋粭l邊應(yīng)該放到什么位置即可。因而我們還需要一個(gè)數(shù)組t[i]存儲(chǔ)從i出發(fā)的邊的條數(shù)。則需要存儲(chǔ)在的位置就可以很輕易地求得。(詳見代碼)
Butter題目代碼如下:
Program butter(input,output);
Type
   edge
=record
            x,y,d:longint;
        end;
Var
   min,res,n,p,c,x,y,i,j,l,r:longint;
   te,e:array[
0..3000] of edge;
   tk,t,k,num,d:array[
1..800] of longint;
   q:array[
1..100000] of longint;
   use:array[
1..800] of boolean;
Procedure swap(var n1,n2:longint);
Var
   tmp:longint;
Begin
   tmp:
=n1;n1:=n2;n2:=tmp;
End;
Begin
   assign(input,
'butter.in');reset(input);
   readln(n,p,c);
   
for i:=1 to n do
   begin
      read(x);
      inc(num[x]);
   end;
   
for i:=1 to c do
   begin
      with e[i
*2-1do readln(x,y,d);
      e[i
*2]:=e[i*2-1];
      swap(e[i
*2].x,e[i*2].y);
   end;
   c:
=c*2;
   
for i:=1 to c do inc(t[e[i].x]);
   j:
=0;k[1]:=1;
   
for i:=2 to p do
      k[i]:
=k[i-1]+t[i-1];
   tk:
=k;te:=e;
   
for i:=1 to c do
   begin
      e[tk[te[i].x]]:
=te[i];
      inc(tk[te[i].x]);
   end;
   min:
=maxlongint;
   
for i:=1 to p do
   begin
      fillchar(q,
sizeof(q),0);
      fillchar(d,
sizeof(d),127);
      fillchar(use,
sizeof(use),false);
      q[
1]:=i;l:=1;r:=1;d[i]:=0;use[i]:=true;
      repeat
            
for j:=k[q[l]] to k[q[l]]+t[q[l]]-1 do
               
if d[q[l]]+e[j].d<d[e[j].y] then
               begin
                  d[e[j].y]:
=d[q[l]]+e[j].d;
                  
if not use[e[j].y] then
                  begin
                     use[e[j].y]:
=true;
                     inc(r);
                     q[r]:
=e[j].y;
                  end;
               end;
            use[q[l]]:
=false;
            inc(l);
      until l
>r;
      res:
=0;
      
for j:=1 to p do
         res:
=res+d[j]*num[j];
      
if res<min then min:=res;
   end;
   assign(output,
'butter.out');rewrite(output);
   writeln(min);close(output);
End.

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产亚洲精品久久久久动| 亚洲精品免费在线播放| 国户精品久久久久久久久久久不卡| 欧美福利视频一区| 免费一级欧美片在线播放| 欧美成人精品在线视频| 欧美一区=区| 久久综合国产精品| 蜜臀av一级做a爰片久久| 欧美福利一区二区三区| 亚洲欧洲另类国产综合| 亚洲无线一线二线三线区别av| 亚洲视频香蕉人妖| 久久激情久久| 欧美激情在线| 国产欧美一区二区精品忘忧草| 一区在线播放| 在线视频一区观看| 亚洲欧美在线播放| 久久美女性网| 91久久一区二区| 亚洲天堂av综合网| 久久九九国产精品| 欧美色123| 国产视频久久久久久久| 亚洲精品在线观| 久久国产欧美精品| 日韩系列在线| 久久夜色精品国产噜噜av| 欧美视频导航| 亚洲精品免费在线| 久久亚洲精品一区二区| 99精品免费网| 久久午夜电影| 国产欧美日韩一区二区三区| 亚洲精品国产精品国自产观看| 久久精品免费电影| 在线亚洲欧美| 欧美日韩成人免费| 亚洲高清不卡| 久久视频在线免费观看| 亚洲一区二区三区在线视频| 欧美 日韩 国产在线| 国产真实乱偷精品视频免| 亚洲一区二区三| 亚洲黄一区二区三区| 久久精品99国产精品日本| 国产精品久久久久久久久久ktv| 亚洲电影免费观看高清完整版在线 | 久久精品国产96久久久香蕉| 亚洲黄色成人久久久| 久久久蜜臀国产一区二区| 国产欧美一区二区三区视频| 亚洲欧美电影院| 一二三区精品福利视频| 欧美日韩精品久久久| 亚洲精品影院在线观看| 亚洲国产99精品国自产| 久久亚洲国产精品日日av夜夜| 国产日韩欧美精品在线| 国产精品一区二区男女羞羞无遮挡| 亚洲精品乱码| 亚洲第一福利在线观看| 久热爱精品视频线路一| 欲色影视综合吧| 久久综合九色欧美综合狠狠| 久久精品色图| 激情偷拍久久| 欧美国产视频在线| 免费欧美高清视频| 亚洲国产精品专区久久| 亚洲国产成人精品女人久久久| 免费观看成人www动漫视频| 亚洲国产三级网| 91久久久久久国产精品| 欧美日韩在线不卡| 午夜在线不卡| 久久精品动漫| 最新热久久免费视频| 亚洲精品免费观看| 国产精品xvideos88| 小黄鸭精品aⅴ导航网站入口| 香蕉视频成人在线观看| 伊人男人综合视频网| 亚洲国产专区| 国产精品青草久久| 免费精品99久久国产综合精品| 欧美成人免费全部| 亚洲一级黄色片| 欧美一区二区视频97| 亚洲人成人一区二区三区| 一区二区三区日韩精品| 国产一区视频在线观看免费| 欧美激情一二三区| 国产精品视频午夜| 欧美国产第二页| 国产精品美女xx| 欧美高清视频一区二区| 国产精品日韩二区| 亚洲激情网站免费观看| 国内久久精品视频| 99在线|亚洲一区二区| 在线观看日韩av先锋影音电影院| 夜夜嗨av一区二区三区四区| 在线观看一区二区精品视频| 一区二区成人精品| 亚洲经典三级| 新狼窝色av性久久久久久| 亚洲韩国青草视频| 欧美在线视频导航| 亚洲一区二区在| 欧美精品粉嫩高潮一区二区| 久久在线91| 国产欧美日本一区二区三区| 亚洲免费成人av| 亚洲精品国产精品国自产观看| 久久国产天堂福利天堂| 午夜精品偷拍| 欧美日韩三级视频| 亚洲国产精品成人| 尤物yw午夜国产精品视频明星| 亚洲视频福利| 99re66热这里只有精品4| 久久国产福利| 欧美亚洲一区在线| 亚洲一区二区视频| 亚洲精选久久| 久久久美女艺术照精彩视频福利播放 | 一本色道久久综合亚洲精品高清 | 久久国产手机看片| 欧美亚一区二区| 亚洲精品久久久久久一区二区| 亚洲风情亚aⅴ在线发布| 久久精品一区| 久久综合九色综合久99| 国内精品久久久| 久久国产精品色婷婷| 久久久久久久国产| 国产亚洲精品自拍| 午夜精品久久久久久久久久久久| 亚洲一级电影| 国产精品自拍一区| 性色av一区二区怡红| 久久五月激情| 亚洲国产另类精品专区| 蜜桃av综合| 欧美国产日韩一区二区在线观看| 一区免费观看| 欧美不卡激情三级在线观看| 亚洲高清不卡一区| 中日韩高清电影网| 国产模特精品视频久久久久 | av成人黄色| 欧美色图麻豆| 亚洲欧美日韩国产成人精品影院| 久久国产精品99国产精| 国产一区二区三区观看| 久久激情久久| 亚洲国产一区二区视频| 这里只有精品电影| 国产精品一区2区| 久久精品欧美日韩| 亚洲精品九九| 小嫩嫩精品导航| 亚洲激情视频网| 国产精品啊v在线| 久久精品一本久久99精品| 91久久香蕉国产日韩欧美9色| 亚洲综合第一页| 狠狠久久亚洲欧美专区| 欧美激情第二页| 午夜欧美电影在线观看| 亚洲国产精品女人久久久| 午夜精品视频一区| 亚洲欧洲日本mm| 国产精品一区二区视频| 免费亚洲电影在线观看| 亚洲欧美日韩成人| 欧美国产在线电影| 午夜精品一区二区在线观看| 亚洲国产另类 国产精品国产免费| 欧美日韩天天操| 久久蜜桃精品| 亚洲综合精品自拍| 亚洲免费在线| 亚洲高清不卡av| 亚洲激情啪啪| 国产精品免费福利| 久久精品国产久精国产一老狼| 亚洲第一福利视频| 久久久久国内| 亚洲在线中文字幕| 亚洲人成毛片在线播放| 国产手机视频一区二区| 欧美色综合网| 欧美精品粉嫩高潮一区二区| 免费成人美女女| 久久青青草原一区二区| 性欧美1819sex性高清| 99精品视频免费观看|