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

posts - 195,  comments - 30,  trackbacks - 0
以后慢慢看
------------
模板是HDOJ 2544
我寫的是記錄每個(gè)點(diǎn)在堆中的位置IncreaseKey,也可以Relax后直接往里插,用個(gè)bool數(shù)組記錄一下

-----
優(yōu)化之處在于時(shí)間復(fù)雜度由n^2變?yōu)閚lgn
-----
#include<cstdio>
#include<cstdlib>

int n,m;
int map[101][101],d[101];

class Heap
{
    public:
        int handle[101];
        void Build(int n)
        {
            for(int i=1;i<=n;i++) a[i]=handle[i]=i;
            size=n;
        }
        void Percup(int p)
        {
            int temp=a[p];
            for(;d[temp]<d[a[p>>1]];p>>=1)
            {
                a[p]=a[p>>1];
                handle[a[p]]=p;
            }
            a[p]=temp;
            handle[a[p]]=p;
        }
        int DeleteMin()
        {
            int val=a[1];
            a[1]=a[size--];
            Percdown(1);
            handle[val]=0;
            return val;
        }
        bool Empty() {return size==0;}
    private:
        int a[101],size;
        void Percdown(int p)
        {
            int temp=a[p],child;
            for(;(p<<1)<=size;p=child)
            {
                child=p<<1;
                if(child+1<=size && d[a[child+1]]<d[a[child]]) child++;
                if(d[temp]<d[a[child]]) break;
                a[p]=a[child];
                handle[a[p]]=p;
            }
            a[p]=temp;
            handle[a[p]]=p;
        }
}h;

void init()
{
    int i,j,c;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++) map[i][j]=0x7fffffff;
        d[i]=0x7fffffff;
    }
    d[1]=0;
    while(m--)
    {
        scanf("%d%d%d",&i,&j,&c);
        map[i][j]=map[j][i]=c;
    }
}

void Relax(int num)
{
    for(int i=1;i<=n;i++)
        if(h.handle[i] && map[num][i]!=0x7fffffff && d[i]>d[num]+map[num][i])
        {
            d[i]=d[num]+map[num][i];
            h.Percup(h.handle[i]);
        }
}

void dijk()
{
    h.Build(n);
    while(!h.Empty()) Relax(h.DeleteMin());
}

int main()
{
    while(scanf("%d%d",&n,&m) && n+m)
    {
        init();
        dijk();
        printf("%d\n",d[n]);
    }
    system("pause");
    return 0;
}
---------------------
另一個(gè)版本
#include <stdio.h>
const int SIZE= 30005, MAXX=2000000000;
int n,m,tail, dist[SIZE];
bool mark[SIZE];
struct Node
{
int id, val;
Node* next;
}node[SIZE];
struct Heap{
int id, val;
}heap[2*SIZE];
void insert(int a, int b, int val)
{
Node* p = new Node;
p->id = a;
p->val = val;
p->next = node[b].next;
node[b].next = p;
}
void heappush(int id, int val)
{
heap[++tail].id = id;
heap[tail].val = val;
int child, parent, temp;
child = tail;
while((parent = child/2)>=1)
{
if(heap[child].val < heap[parent].val) // child's val < parent's val ; swap ,filter
{
temp = heap[child].id;
heap[child].id = heap[parent].id;
heap[parent].id = temp;
temp = heap[child].val;
heap[child].val = heap[parent].val;
heap[parent].val = temp;
child = parent;
}
else
break;
}
}
int heappop()
{
int child, parent, temp,ret;
ret = heap[1].id;
heap[1].id = heap[tail].id; 
// swap the tail to the root
heap[1].val = heap[tail--].val;
parent = 1;
while((child=2*parent)<=tail)
{
if(child+1<=tail && heap[child+1].val < heap[child].val)
child++;
if(heap[child].val<heap[parent].val)
{
temp = heap[child].id;
heap[child].id = heap[parent].id;
heap[parent].id = temp;
temp = heap[child].val;
heap[child].val = heap[parent].val;
heap[parent].val = temp;
parent = child;
}
else
break;
}
return ret;
}
int dijkstra(int s, int t)
{
int i;
for(i=1; i<=n; i++)
{
dist[i] = MAXX;
mark[i] = false;
}
Node* p;
p = node[s].next;
while(p)
{
dist[p->id] = p->val;
heappush(p->id, p->val);
p = p->next;
}
mark[s] = true; dist[s] = 0;
for(i=1; i<n; i++)
{
int pop = heappop();
while(mark[pop])
pop = heappop();
if(pop ==t || dist[pop]==MAXX)	break;
mark[pop] = true;
p = node[pop].next;
while(p)
{
if(!mark[p->id]&&
(dist[p->id]==MAXX || dist[pop]+p->val< dist[p->id]))
{
dist[p->id] = dist[pop] + p->val;
heappush(p->id, dist[p->id]);
}
p = p->next;
}
}
return dist[t];
}
int main()
{
int i,a,b,c;
scanf("%d%d", &n, &m);
for(i=1; i<=m; i++)
{
scanf("%d%d%d", &a, &b, &c);
insert(a, b, c);
}
printf("%d\n", dijkstra(n,1));
return 0;
}
posted on 2009-08-09 21:28 luis 閱讀(1815) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 圖論*矩陣
<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

文章分類

文章檔案

友情鏈接

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久精品美女| 午夜伦理片一区| 欧美激情在线| 久久国产精品免费一区| 国产精品久久久久免费a∨| 亚洲狼人精品一区二区三区| 欧美成人精品h版在线观看| 久久www成人_看片免费不卡| 欧美午夜不卡影院在线观看完整版免费 | 亚洲国产精品久久91精品| 久久爱www| 午夜精品久久一牛影视| 国产精品亚洲激情| 香蕉国产精品偷在线观看不卡| 中日韩美女免费视频网站在线观看| 欧美激情精品久久久久久免费印度 | 亚洲精品1234| 欧美成人资源网| 亚洲经典自拍| 亚洲人成网站在线观看播放| 欧美激情片在线观看| 99在线观看免费视频精品观看| 亚洲乱码国产乱码精品精天堂 | 久久久青草婷婷精品综合日韩| 激情视频一区| 亚洲第一中文字幕| 欧美日韩成人| 欧美一级黄色网| 久久精品中文| 夜夜嗨av一区二区三区网页| 中文久久精品| 狠狠狠色丁香婷婷综合久久五月 | 亚洲免费av观看| 欧美性视频网站| 久久久久欧美精品| 欧美国产日韩亚洲一区| 亚洲手机在线| 亚洲欧美综合v| 免费日韩av电影| 免费久久99精品国产| 亚洲国产精品一区二区第四页av| 亚洲国产精品va| 国产精品高清在线| 久久天堂国产精品| 欧美屁股在线| 久久久噜噜噜久久狠狠50岁| 免费视频亚洲| 午夜亚洲伦理| 欧美国产日韩a欧美在线观看| 亚洲欧美一区二区三区极速播放 | 欧美成人嫩草网站| 欧美日韩日韩| 久久人体大胆视频| 欧美激情在线观看| 久久久久这里只有精品| 欧美日韩一区二区精品| 久久综合免费视频影院| 欧美日韩一区二区三区四区在线观看| 久久久久综合网| 欧美午夜电影在线| 欧美ed2k| 国产一区视频网站| 在线综合亚洲| 亚洲看片网站| 美女日韩欧美| 久久久人人人| 国产精品主播| 一区二区精品国产| 亚洲韩国日本中文字幕| 亚洲欧美久久久| 亚洲一区二区三区欧美| 免费中文日韩| 牛人盗摄一区二区三区视频| 国产欧美在线视频| 亚洲视频久久| 在线亚洲成人| 欧美激情视频一区二区三区免费| 美女日韩在线中文字幕| 国产欧美精品在线观看| 日韩午夜在线播放| 日韩视频中文| 欧美福利在线| 欧美风情在线| 在线观看欧美视频| 久久久999成人| 久久亚洲免费| 尹人成人综合网| 久久久久久婷| 欧美不卡三区| 亚洲国产一区视频| 蜜臀久久99精品久久久画质超高清| 噜噜噜噜噜久久久久久91| 国产一区二区高清| 久久国产精品久久精品国产| 久久久噜噜噜久久中文字幕色伊伊 | 欧美高清在线视频观看不卡| 欧美成人中文字幕| 在线成人av.com| 久久爱另类一区二区小说| 久久久久久久久久久久久9999 | 亚洲欧美影音先锋| 国产伦一区二区三区色一情| 亚洲综合99| 久久大逼视频| 国产亚洲欧美一级| 久久福利精品| 亚洲电影第1页| 亚洲精选中文字幕| 欧美日韩一区二区三区免费看| 亚洲视频在线观看网站| 欧美在线亚洲在线| 激情视频一区二区| 欧美精品少妇一区二区三区| 中日韩美女免费视频网站在线观看| 欧美影院视频| 有坂深雪在线一区| 欧美另类亚洲| 性高湖久久久久久久久| 美女在线一区二区| 一本色道久久综合亚洲91| 国产精品乱子久久久久| 久久久久国产一区二区| 亚洲国产一区二区三区高清| 亚洲主播在线播放| 黑人操亚洲美女惩罚| 欧美黄色成人网| 欧美一区二区| 亚洲国产乱码最新视频| 午夜久久tv| 亚洲国产精品久久人人爱蜜臀| 欧美日韩一区二区三区| 久久久蜜桃一区二区人| 在线视频日韩| 欧美成人午夜剧场免费观看| 亚洲影院一区| 亚洲国产毛片完整版 | 欧美日韩极品在线观看一区| 亚洲免费视频一区二区| 欧美成人激情视频| 亚洲一区尤物| 亚洲激情国产| 国产一区二区欧美| 欧美日韩mp4| 乱中年女人伦av一区二区| 亚洲一区尤物| 亚洲国产精品悠悠久久琪琪| 久久视频免费观看| 亚洲欧美日韩成人高清在线一区| 亚洲人精品午夜在线观看| 国产手机视频一区二区| 欧美日韩在线观看一区二区| 你懂的亚洲视频| 久久岛国电影| 久久激情视频久久| 午夜精品久久久久久久白皮肤 | 国产精品人成在线观看免费 | 欧美色精品天天在线观看视频| 久久动漫亚洲| 午夜伦理片一区| 亚洲欧美国产日韩天堂区| 99国产精品久久久久老师| 欧美国产精品v| 老司机精品久久| 久久精品一区二区三区中文字幕| 亚洲一区二区三区久久| 一区二区久久久久| 亚洲精品免费在线播放| 亚洲高清av| 亚洲成人中文| 伊人成人开心激情综合网| 国产色爱av资源综合区| 国产精品私拍pans大尺度在线| 欧美午夜一区| 国产精品老女人精品视频| 国产精品v亚洲精品v日韩精品| 欧美三级韩国三级日本三斤| 欧美日韩免费区域视频在线观看| 欧美精品久久天天躁| 欧美激情亚洲自拍| 欧美精品一区二区视频| 欧美日韩亚洲综合在线| 国产精品久久久久久久7电影 | 亚洲国产二区| 亚洲精品国产精品国自产在线 | 欧美激情精品久久久久久蜜臀| 欧美精品三级日韩久久| 欧美日韩综合| 国产精品自拍网站| 国产在线视频欧美一区二区三区| 一区二区亚洲| 亚洲第一福利在线观看| 亚洲品质自拍| 亚洲一区免费视频| 午夜精品在线观看| 久久免费黄色| 亚洲欧洲一二三| 中文日韩在线|