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

T9的空間

You will never walk alone!

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  69 隨筆 :: 0 文章 :: 28 評(píng)論 :: 0 Trackbacks

網(wǎng)上看到的spfa的實(shí)現(xiàn),很清晰。Orz~~

#include <cstdio>
#include 
<cstring>
const int maxn = 10000+1;
const int maxnm = 100000+1;
class node 
{
      
public:
             
int l,to;
             node 
* next;    
}
;
template
<class T>
class queue{
private:
    
long N;
    T
* s;
    
long beg,end;
public:
    inline 
void init(){
     beg
=end=0;
    }

    queue(
long size):N(size),s(new T[size]){
     init();
    }

    inline 
void push(const T& item){
     s[end]
=item;
     
++end;
     end
%=N;
    }

    inline T pop()
{
     T res
=s[beg];
     
++beg;
     beg
%=N;
     
return res;
    }

    inline 
bool empty(){
     
return beg==end;
    }

}
;

node 
*f[maxnm];
int n,m,s,t,ans;
int dist[maxn];
bool p[maxn];//判斷點(diǎn)是否在隊(duì)列當(dāng)中
inline void init()
{
        FILE 
*fin = fopen("sssp.in","r");
        
int i,j,p1,p2,len;
        node 
*tp;
        fscanf(fin,
"%d%d",&n,&m);
        
for (i = 1 ; i <= m ; i++)
        
{
               fscanf(fin,
"%d%d%d",&p1,&p2,&len);
               tp 
= new node;
               tp 
-> l = len;
               tp 
-> to = p2; 
               tp 
-> next = f[p1];
               f[p1] 
= tp;                  
        }
    
        fscanf(fin,
"%d%d",&s,&t);   
}


inline 
void work()
{
         
int i,j,k;
         node 
* tp;
         queue 
<int> que(n+1);
         que.init();
         memset(dist,
126,sizeof(dist));
         dist[s] 
= 0;
         que.push(s);
         p[s] 
= true;
         
do 
         

              i 
= que.pop();
              tp 
= f[i];
              p[i] 
=    false;    //p[i] = false 表示i點(diǎn)不在隊(duì)列當(dāng)中
              while (tp!=NULL)
              
{
                 
if (dist[i]+tp->l<dist[tp->to])     
                    
{
                        dist[tp
->to] = dist[i]+tp->l;
                        
if (!p[tp->to])     //如果tp->to沒有在隊(duì)列當(dāng)中,那就將它加進(jìn)去
                        {
                           que.push(tp
->to);
                           p[tp
->to] = true;
                        }
 
                    }
      
                    tp 
= tp->next;
              }
         
         }
while (!que.empty());
       
}

inline 
void print()
{
        FILE 
*fout = fopen("sssp.out","w");
        fprintf(fout,
"%d\n",dist[t]);       
}

int main()
{
        init();
        work();
        print();
        
return 0;    
}



還有一種實(shí)現(xiàn)方法用了STL的queue,構(gòu)圖的方法很好是一個(gè)一維的加一個(gè)p數(shù)組
#include <iostream>
#include 
<queue>
using namespace std;

const long MAXN=10000;
const long lmax=0x7FFFFFFF;

typedef 
struct  
{
    
long v;
    
long next;
    
long cost;
}
Edge;


Edge e[MAXN];
long p[MAXN];
long Dis[MAXN];
bool vist[MAXN];

queue
<long> q;

long m,n;//點(diǎn),邊
void init()
{
    
long i;
    
long eid=0;

    memset(vist,
0,sizeof(vist));
    memset(p,
-1,sizeof(p));
    fill(Dis,Dis
+MAXN,lmax);

    
while (!q.empty())
    
{
        q.pop();
    }


    
for (i=0;i<n;++i)
    
{
        
long from,to,cost;
        scanf(
"%ld %ld %ld",&from,&to,&cost);

        e[eid].next
=p[from];
        e[eid].v
=to;
        e[eid].cost
=cost;
        p[from]
=eid++;

        
//以下適用于無向圖
        swap(from,to);
        
        e[eid].next
=p[from];
        e[eid].v
=to;
        e[eid].cost
=cost;
        p[from]
=eid++;

    }

}


void print(long End)
{
    
//若為lmax 則不可達(dá)
    printf("%ld\n",Dis[End]);    
}


void SPF()
{

    init();

    
long Start,End;
    scanf(
"%ld %ld",&Start,&End);
    Dis[Start]
=0;
    vist[Start]
=true;
    q.push(Start);

    
while (!q.empty())
    
{
        
long t=q.front();
        q.pop();
        vist[t]
=false;
        
long j;
        
for (j=p[t];j!=-1;j=e[j].next)
        
{
            
long w=e[j].cost;
            
if (w+Dis[t]<Dis[e[j].v])
            
{
                Dis[e[j].v]
=w+Dis[t];
                
if (!vist[e[j].v])
                
{
                    vist[e[j].v]
=true;
                    q.push(e[j].v);
                }

            }

        }

    }


    print(End);

}


int main()
{
    
while (scanf("%ld %ld",&m,&n)!=EOF)
    
{
        SPF();
    }

    
return 0;
}
posted on 2008-09-11 17:01 Torres 閱讀(1108) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Graph

評(píng)論

# re: SPFA (Shortest Path Faster Algorithm) 2009-03-26 19:29 xxx
靜態(tài)與動(dòng)態(tài)區(qū)別,能不能把原地址貼出來  回復(fù)  更多評(píng)論
  

# re: SPFA (Shortest Path Faster Algorithm) 2009-03-26 22:35 Torres
源地址倒是忘了,搜搜吧,這個(gè)應(yīng)該容易理解的  回復(fù)  更多評(píng)論
  


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久免费a∨大胸| 国产精品一区二区在线| 激情久久一区| 久久国产欧美| 久久电影一区| 今天的高清视频免费播放成人| 久久嫩草精品久久久久| 久久成人免费电影| 伊人成人开心激情综合网| 欧美va日韩va| 欧美精品乱码久久久久久按摩| av成人免费在线| 亚洲一区在线直播| 国内成人自拍视频| 欧美大片91| 欧美日韩亚洲系列| 久久精品一区二区| 欧美福利一区二区| 亚洲综合成人婷婷小说| 欧美在线日韩在线| 99精品国产热久久91蜜凸| 亚洲亚洲精品三区日韩精品在线视频 | 国产精品一区免费观看| 久久综合狠狠| 欧美大色视频| 久久国内精品视频| 欧美大胆成人| 久久久999成人| 欧美另类一区| 久久免费视频这里只有精品| 女生裸体视频一区二区三区| 午夜亚洲激情| 欧美国产在线观看| 久久国产精品一区二区三区| 欧美大片一区二区三区| 久久久高清一区二区三区| 欧美剧在线免费观看网站| 久久国产精彩视频| 欧美麻豆久久久久久中文| 久久综合九色综合久99| 国产精品国产三级国产普通话三级| 久久久久看片| 欧美日韩一区二区国产| 欧美成人午夜激情| 国产欧美韩国高清| 99国产一区二区三精品乱码| 1024亚洲| 久久久久免费观看| 久久国产福利| 国产精品久久久久久久久久免费| 亚洲国产日韩欧美在线动漫| 国产麻豆综合| 亚洲夜晚福利在线观看| 夜夜嗨av一区二区三区| 久久男人av资源网站| 久久av在线看| 国产精品日韩欧美综合| 一区二区三区欧美在线| 在线一区视频| 欧美日韩色综合| 亚洲国产日韩欧美在线99 | 欧美日本一区| 亚洲福利在线视频| 亚洲第一页在线| 久久艳片www.17c.com| 久久久久99精品国产片| 国产日韩精品一区观看| 亚洲综合好骚| 久久九九国产| 精品福利免费观看| 久久另类ts人妖一区二区| 另类av导航| 亚洲激情精品| 欧美激情第1页| 99在线精品视频| 亚洲综合另类| 国产日韩在线不卡| 久久久99国产精品免费| 欧美福利影院| 一本色道久久综合亚洲精品不卡| 欧美精品三级在线观看| 一区二区激情视频| 欧美一级在线视频| 国产最新精品精品你懂的| 久久久久久久综合日本| 欧美激情一区二区三区在线 | 欧美日韩亚洲国产一区| 亚洲最黄网站| 久久精品亚洲乱码伦伦中文| 极品中文字幕一区| 欧美精品在线免费播放| 亚洲午夜激情免费视频| 久久久91精品国产一区二区三区| 在线成人欧美| 欧美伦理91i| 午夜国产不卡在线观看视频| 老司机免费视频一区二区| 亚洲美女毛片| 国产精品一区毛片| 欧美aⅴ99久久黑人专区| 一本色道**综合亚洲精品蜜桃冫| 午夜精品久久久久久久久久久久久 | 国产精品一区三区| 久久综合中文色婷婷| 99国产精品国产精品久久| 久久久久久久久伊人| 99精品久久| 国产一区二区在线观看免费播放| 欧美国产精品日韩| 欧美一区国产一区| 一本久久综合亚洲鲁鲁| 久久一区二区三区超碰国产精品| 一区二区三区精品在线| 狠狠色综合网| 国产精品日本欧美一区二区三区| 老司机成人在线视频| 亚洲女同在线| 亚洲区一区二区三区| 久久精视频免费在线久久完整在线看| 亚洲免费成人av电影| 国内揄拍国内精品久久 | 亚洲一区二区少妇| 亚洲日本精品国产第一区| 久久久蜜桃精品| 亚洲专区在线视频| 日韩亚洲国产精品| 亚洲春色另类小说| 国内精品久久久久久影视8 | 欧美激情精品| 久久久在线视频| 欧美一区二区三区四区在线| 一区二区欧美日韩| 亚洲免费激情| 亚洲精品久久久久久下一站| 欧美电影免费观看高清| 久久青草久久| 久久久亚洲高清| 久久久久九九视频| 欧美在线三级| 久久国产视频网站| 欧美专区在线| 欧美影院精品一区| 久久国产精品99精品国产| 小黄鸭精品密入口导航| 性色av一区二区三区| 亚洲欧美日韩另类精品一区二区三区| 9人人澡人人爽人人精品| 亚洲精品久久久久| 夜夜爽av福利精品导航| 9久re热视频在线精品| 夜久久久久久| 亚洲女与黑人做爰| 欧美一区二区三区啪啪| 久久精品国产2020观看福利| 久久精品日产第一区二区| 久久精品国产清高在天天线 | 亚洲一区二区在线播放| 亚洲一区中文字幕在线观看| 亚洲午夜精品17c| 性欧美18~19sex高清播放| 久久电影一区| 欧美成人按摩| 亚洲日本中文字幕| 在线中文字幕不卡| 亚洲欧美中文日韩在线| 久久久免费av| 欧美日韩国产色视频| 国产精品国产三级国产普通话三级 | 久久久噜噜噜久久| 欧美大秀在线观看 | 午夜精品影院| 久久午夜视频| 欧美色欧美亚洲另类二区| 国产日本欧美一区二区三区在线 | 国产一区二区在线观看免费播放 | 国产一区二区三区久久久久久久久| 韩国三级电影久久久久久| 亚洲精品一区在线| 午夜精品久久久久久久99热浪潮| 久久最新视频| 99精品福利视频| 久久久噜噜噜久久中文字幕色伊伊| 欧美成人免费在线| 国产日韩欧美电影在线观看| 亚洲国产精品一区在线观看不卡 | 一区在线播放| 亚洲一区二区视频在线| 久久蜜桃香蕉精品一区二区三区| 亚洲人成网站影音先锋播放| 亚洲欧美国产不卡| 欧美激情成人在线视频| 国精品一区二区三区| 9i看片成人免费高清| 裸体一区二区三区| 亚洲网在线观看| 欧美激情一区在线观看| 国语自产在线不卡| 午夜精品福利一区二区蜜股av| 亚洲大片一区二区三区| 欧美中文字幕第一页|