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

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>
            国产亚洲成精品久久| 亚洲国产mv| 国产日韩欧美一二三区| 国产精品亚洲综合色区韩国| 国产精品九九久久久久久久| 国产精品老女人精品视频| 国产精品主播| 国产亚洲精品一区二区| 伊人一区二区三区久久精品| 在线激情影院一区| 亚洲精品美女在线观看播放| 亚洲天堂激情| 欧美在线一区二区| 久久综合九九| 亚洲激情一区二区| 夜夜精品视频一区二区| 亚洲一区二区精品在线观看| 欧美一区二区三区四区在线观看| 久久精品视频在线| 欧美韩日一区二区| 国产精品盗摄久久久| 国产欧美精品日韩| 在线日韩av片| 在线亚洲成人| 久久精品二区三区| 欧美激情国产日韩精品一区18| 亚洲国产欧洲综合997久久| 宅男66日本亚洲欧美视频| 香蕉成人久久| 欧美r片在线| 国产精品亚洲аv天堂网| 极品少妇一区二区| 99精品视频免费| 性欧美暴力猛交69hd| 免费高清在线视频一区·| 亚洲精品美女在线观看播放| 亚洲免费在线精品一区| 牛牛影视久久网| 国产精品一香蕉国产线看观看| 亚洲第一在线综合在线| 亚洲欧美日韩国产另类专区| 老鸭窝亚洲一区二区三区| 亚洲精品在线视频| 欧美综合第一页| 欧美日本成人| 永久555www成人免费| 一区二区欧美亚洲| 久久综合五月| 亚洲午夜精品一区二区三区他趣 | 在线日本高清免费不卡| 亚洲一级在线观看| 美女主播一区| 亚洲小少妇裸体bbw| 久久综合网色—综合色88| 国产精品爱久久久久久久| 1024亚洲| 午夜精品理论片| 亚洲国产一区二区三区高清| 欧美一区国产二区| 欧美性猛交xxxx乱大交蜜桃| 91久久午夜| 久久亚洲国产成人| 亚洲综合视频1区| 欧美美女操人视频| 亚洲国产精品123| 久久久久9999亚洲精品| 亚洲午夜av在线| 欧美精品激情在线| 在线视频成人| 另类酷文…触手系列精品集v1小说| 亚洲视频中文字幕| 欧美乱在线观看| 最新国产乱人伦偷精品免费网站 | 欧美一区免费视频| 欧美日韩中文字幕精品| 亚洲精品久久久久中文字幕欢迎你 | 亚洲影院污污.| 欧美日韩高清区| 亚洲日本久久| 亚洲大片在线观看| 久久亚洲图片| 亚洲第一主播视频| 久久综合精品国产一区二区三区| 亚洲欧美一区二区精品久久久 | 一本大道久久精品懂色aⅴ| 欧美刺激性大交免费视频| 欧美在线国产精品| 国产自产精品| 久久久成人精品| 午夜一级久久| 国产亚洲免费的视频看| 久久国产视频网| 午夜视频一区在线观看| 国产片一区二区| 久久都是精品| 久久黄金**| 尤物九九久久国产精品的分类| 浪潮色综合久久天堂| 久久九九99视频| 亚洲国产精品福利| 亚洲第一中文字幕在线观看| 欧美a级一区| 99视频有精品| 亚洲视频在线观看视频| 国产精品久久久久久久午夜| 午夜精品久久| 欧美一区二区三区免费看| 国产一区二区三区的电影 | 一区二区三区四区五区视频 | 欧美电影免费观看高清完整版| 久久亚洲国产成人| 91久久久国产精品| 亚洲人成啪啪网站| 欧美性视频网站| 性欧美xxxx大乳国产app| 欧美资源在线观看| 亚洲福利在线视频| 亚洲国产美女精品久久久久∴| 欧美另类人妖| 羞羞色国产精品| 久久久精品国产一区二区三区 | 欧美日韩高清在线观看| 亚洲欧美日韩国产综合精品二区| 亚洲欧美视频一区| 在线观看91久久久久久| 亚洲精品久久久久久一区二区| 国产精品久久久久久久久久尿| 久久成人精品视频| 久色成人在线| 亚洲一级在线观看| 久久激情一区| 一区二区免费在线播放| 亚洲欧美日韩天堂| 亚洲国产精品视频| 亚洲午夜精品| 亚洲高清自拍| 亚洲一区国产| 亚洲第一综合天堂另类专| 一本久久综合亚洲鲁鲁| 激情久久久久久久久久久久久久久久| 亚洲高清免费| 国产欧美亚洲一区| 亚洲国产三级在线| 国产欧美一区二区三区另类精品| 美女视频黄a大片欧美| 欧美日韩视频在线观看一区二区三区 | 在线播放视频一区| 亚洲视频免费在线观看| 亚洲国产成人av好男人在线观看| 在线视频你懂得一区| 在线不卡a资源高清| 亚洲午夜电影网| 91久久在线播放| 亚洲综合日韩在线| 亚洲精品影视在线观看| 性欧美18~19sex高清播放| 亚洲最新色图| 鲁大师成人一区二区三区 | 亚洲专区在线| 欧美成人精品在线播放| 久久精品一二三| 欧美视频你懂的| 亚洲国产成人久久综合一区| 国产日韩欧美亚洲一区| 日韩亚洲视频| 91久久夜色精品国产九色| 欧美在线|欧美| 午夜精品在线看| 欧美精品一区二区三区蜜臀| 浪潮色综合久久天堂| 国产欧美欧洲在线观看| 夜夜嗨av一区二区三区网页| 亚洲精品日韩精品| 久久人人爽国产| 久久久www成人免费无遮挡大片| 欧美日韩免费观看一区三区| 欧美黄色网络| 一色屋精品亚洲香蕉网站| 午夜精品美女自拍福到在线 | 亚洲天堂网在线观看| 夜夜嗨av一区二区三区四季av| 六月天综合网| 欧美成年人视频| 精品999久久久| 久久精品男女| 久久久久亚洲综合| 国产无遮挡一区二区三区毛片日本| 中日韩美女免费视频网址在线观看| 日韩视频免费看| 欧美成人乱码一区二区三区| 欧美丰满高潮xxxx喷水动漫| 国语自产在线不卡| 久久精品国产综合精品| 久久久久国产精品www| 国产日韩欧美在线看| 亚洲免费在线播放| 久久av红桃一区二区小说| 国产精品腿扒开做爽爽爽挤奶网站| 中日韩美女免费视频网址在线观看 | 亚洲成人在线网|