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

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

前向星+SPFA(轉載)

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

MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋    

 

代碼
前向星+SPFA
我是在做USACO的sweet butter時偶然發現這個東西的。。。
這個算法,簡單的說就是隊列優化的bellman
-ford,利用了每個點不會更新次數太多的特點發明的此算法(僅為個人理解=.=
SPFA——Shortest Path Faster Algorithm,它可以在O(kE)的時間復雜度內求出源點到其他所有點的最短路徑,可以處理負邊。SPFA的實現甚至比Dijkstra或者Bellman_Ford還要簡單:
設Dist代表S到I點的當前最短距離,Fa代表S到I的當前最短路徑中I點之前的一個點的編號。開始時Dist全部為
+∞,只有Dist[S]=0,Fa全部為0。
維護一個隊列,里面存放所有需要進行迭代的點。初始時隊列中只有一個點S。用一個布爾數組記錄每個點是否處在隊列中。
每次迭代,取出隊頭的點v,依次枚舉從v出發的邊v
->u,設邊的長度為len,判斷Dist[v]+len是否小于Dist,若小于則改進Dist,將Fa記為v,并且由于S到u的最短距離變小了,有可能u可以改進其它的點,所以若u不在隊列中,就將它放入隊尾。這樣一直迭代下去直到隊列變空,也就是S到所有的最短距離都確定下來,結束算法。
SPFA 在形式上和寬度優先搜索非常類似,不同的是寬度優先搜索中一個點出了隊列就不可能重新進入隊列,但是SPFA中一個點可能在出隊列之后再次被放入隊列,也就是一個點改進過其它的點之后,過了一段時間可能本身被改進,于是再次用來改進其它的點,這樣反復迭代下去。設一個點用來作為迭代點對其它點進行改進的平均次數為k,有辦法證明對于通常的情況,k在2左右
前向星優化:
不要把前向星想成什么高深莫測的東西……它其實就是一種鄰接表的緊縮存儲形式。
為什么叫前向星?因為它是將邊按照前端點排序,并用一個數組k[i]記錄端點i第一次以左端點出現的位置。這樣,我們就能用O(E)的空間復雜度存儲下一個鄰接表,而避免了鏈表或N
^2的龐大空間消耗。
當然,實際上我們并不需要排序:因為我們只需要知道某一條邊應該放到什么位置即可。因而我們還需要一個數組t[i]存儲從i出發的邊的條數。則需要存儲在的位置就可以很輕易地求得。(詳見代碼)
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>
            亚洲日本理论电影| 欧美韩日一区二区| 欧美激情91| 可以看av的网站久久看| 久久久久国产免费免费| 噜噜爱69成人精品| 欧美.www| 亚洲区国产区| 亚洲美女中文字幕| 亚洲午夜免费视频| 久久爱另类一区二区小说| 久久精品国产综合精品| 久久久久久夜| 欧美日韩国产区一| 国内久久婷婷综合| 91久久国产综合久久| 亚洲一区国产精品| 久久综合伊人77777| 亚洲精品在线观看视频| 亚洲自拍16p| 欧美高清在线一区| 国产精品一区二区三区观看| 国产一区二区三区在线观看视频 | 麻豆成人91精品二区三区| 蘑菇福利视频一区播放| 国产精品成人一区| 亚洲日本激情| 久久久久久一区二区| 91久久国产综合久久| 亚洲免费影视| 欧美激情成人在线| 伊人久久婷婷| 欧美一区2区三区4区公司二百| 能在线观看的日韩av| 亚洲一区二区三区777| 免费在线国产精品| 国产自产精品| 欧美一区二区三区在线免费观看 | 欧美激情视频一区二区三区在线播放 | 亚洲第一色中文字幕| 亚洲午夜精品在线| 欧美韩国一区| 亚洲欧美一区二区三区极速播放| 中文国产一区| 亚洲一区二区不卡免费| 久久精品国产欧美激情 | 国产精品成人在线| 伊人成人在线视频| 欧美一区二区高清在线观看| 亚洲精品综合精品自拍| 欧美jizz19hd性欧美| 亚洲二区在线视频| 久久久夜色精品亚洲| 亚洲欧美日本国产有色| 欧美亚洲成人精品| 亚洲天堂黄色| 日韩午夜电影av| 欧美日本国产精品| 99精品视频一区| 亚洲欧洲日产国产综合网| 久久久久久夜| 亚洲国产精品久久久久婷婷884| 狼人天天伊人久久| 久久人人爽爽爽人久久久| 在线日韩一区二区| 你懂的成人av| 欧美啪啪一区| 亚洲免费中文| 欧美亚洲专区| 在线看片日韩| 亚洲欧洲视频在线| 国产精品成人国产乱一区| 校园春色国产精品| 久久狠狠久久综合桃花| 亚洲电影天堂av| 亚洲精品免费观看| 国产精品日韩一区| 久久久久一本一区二区青青蜜月| 久久精品主播| 亚洲六月丁香色婷婷综合久久| 亚洲美女av网站| 国产精品一区在线播放| 老妇喷水一区二区三区| 欧美成人高清| 亚洲欧美日韩在线观看a三区| 亚洲欧美日韩直播| 亚洲东热激情| 一区二区三区不卡视频在线观看| 国产模特精品视频久久久久| 老司机午夜精品视频在线观看| 欧美成人激情在线| 亚洲欧美视频一区| 久久aⅴ国产紧身牛仔裤| 最新精品在线| 亚洲在线观看视频网站| 在线观看日产精品| 一区二区在线观看av| 美国成人直播| 美女网站久久| 亚洲免费视频观看| 久久精品在线观看| 亚洲自拍另类| 麻豆精品在线播放| 亚洲一线二线三线久久久| 久久久噜久噜久久综合| 亚洲网站在线播放| 久久亚洲精品一区二区| 亚洲欧洲av一区二区| 欧美国产乱视频| 蜜桃久久精品一区二区| 国产精品丝袜久久久久久app| 亚洲第一精品久久忘忧草社区| 国产伦精品一区| 一区二区三区不卡视频在线观看 | 亚洲第一区色| 性欧美大战久久久久久久免费观看 | 欧美日韩影院| 欧美韩日一区二区三区| 国产一区二区三区观看| 亚洲视频999| 中文欧美字幕免费| 欧美激情综合色| 欧美国产成人在线| 一色屋精品亚洲香蕉网站| 性感少妇一区| 久久久久久穴| 国产在线精品一区二区夜色| 午夜久久电影网| 欧美诱惑福利视频| 欧美日韩亚洲一区二区| 亚洲日本在线观看| 日韩视频精品在线| 欧美精品福利| 日韩视频免费观看高清完整版| 夜夜嗨av色综合久久久综合网| 农村妇女精品| 亚洲国产三级网| 一本久道久久综合婷婷鲸鱼| 欧美乱大交xxxxx| 亚洲美女毛片| 在线午夜精品| 国产精品美女久久久免费| 宅男噜噜噜66一区二区| 性色一区二区| 国产午夜精品一区二区三区欧美| 亚洲欧美在线视频观看| 久久www成人_看片免费不卡| 国产欧美日韩精品丝袜高跟鞋| 亚洲欧美一区二区视频| 久久人人爽人人爽爽久久| 一区二区在线观看av| 欧美mv日韩mv国产网站| 一区二区av在线| 久久久久久尹人网香蕉| 亚洲国产精品电影| 欧美日韩高清免费| 亚洲一区二区三区在线看| 久久av一区| 亚洲国产精品精华液网站| 欧美色图一区二区三区| 午夜伦理片一区| 免费一级欧美片在线观看| 欧美精品1区2区| 欧美在线关看| 在线观看欧美成人| 欧美日韩免费观看一区=区三区| 中文国产成人精品| 美女黄毛**国产精品啪啪| 亚洲精品色图| 国产精品视频| 美女黄网久久| 亚洲欧美日韩精品| 亚洲国产va精品久久久不卡综合| 亚洲免费网址| 亚洲人成久久| 国内一区二区在线视频观看| 欧美精品福利| 久久久国产精品亚洲一区 | 久久99在线观看| 亚洲理伦在线| 影音先锋久久精品| 国产精品狠色婷| 免费观看一级特黄欧美大片| 亚洲一区二区三区四区五区午夜| 欧美激情一区二区三区成人| 欧美一区二区视频免费观看| 日韩网站在线| 一区二区三区亚洲| 国产精品一区二区在线观看网站| 欧美激情视频一区二区三区在线播放| 午夜亚洲一区| 亚洲桃色在线一区| 99国产一区| 亚洲国产婷婷综合在线精品| 久久亚洲综合网| 久久福利电影| 欧美一区二区| 亚洲欧美中文日韩在线| 一本一本久久| 亚洲美女中出|