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

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

-----
優化之處在于時間復雜度由n^2變為nlgn
-----
#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;
}
---------------------
另一個版本
#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) 評論(0)  編輯 收藏 引用 所屬分類: 圖論*矩陣
<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

文章分類

文章檔案

友情鏈接

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲成色最大综合在线| 国产精品hd| 女生裸体视频一区二区三区| 亚洲日本电影在线| 国产中文一区| 国产精品久久久对白| 欧美成人综合| 亚洲天堂av电影| 亚洲日本激情| 91久久精品一区二区三区| 免费一级欧美片在线播放| 久久国产手机看片| 欧美一区二视频| 午夜精品久久久久久久99樱桃| 日韩一二三区视频| 亚洲美洲欧洲综合国产一区| 最近看过的日韩成人| 亚洲欧洲精品天堂一级| 国产综合精品一区| 国产主播在线一区| 在线观看亚洲精品| 国产日韩精品一区二区浪潮av| 欧美日韩日本国产亚洲在线| 欧美日韩精品国产| 国产精品99一区二区| 国产精品久久久久久久久动漫 | 亚洲第一页在线| 亚洲高清一区二| 亚洲精品免费网站| 一本大道久久a久久精二百| 一区二区三区欧美在线观看| 一本一本久久a久久精品综合麻豆| 亚洲视频在线看| 久久久久久久999| 91久久久国产精品| 久久激情视频久久| 国产精品色婷婷| 日韩一区二区久久| 噜噜爱69成人精品| 亚洲午夜精品久久久久久app| 女女同性精品视频| 黑人中文字幕一区二区三区| 亚洲一区二区三区影院| 欧美国产一区二区在线观看 | 西西人体一区二区| 欧美电影免费观看| 精品成人在线| 久久精品国产成人| 亚洲在线一区| 欧美日韩国产专区| 亚洲精品一区二区三区福利| 久久久久久免费| 亚洲一区黄色| 欧美三级在线| 日韩视频在线永久播放| 欧美大片专区| 美女网站在线免费欧美精品| 国产真实乱偷精品视频免| 欧美一区二区三区在线视频| 一区二区激情视频| 欧美激情综合色| 亚洲精品美女久久7777777| 美女日韩欧美| 久久久久久久999| 在线免费观看日本一区| 噜噜噜在线观看免费视频日韩 | 亚洲尤物在线视频观看| 欧美视频在线看| 亚洲一区二区三区精品在线| 亚洲精选在线| 国产精品久久精品日日| 欧美综合77777色婷婷| 午夜日韩福利| 国产性做久久久久久| 久久亚洲精品一区| 免费欧美高清视频| 一卡二卡3卡四卡高清精品视频| 亚洲精品美女| 国产精品午夜久久| 美女精品视频一区| 欧美精品高清视频| 亚洲欧美清纯在线制服| 欧美一区观看| 亚洲精品国产系列| 亚洲视频观看| 狠狠爱综合网| 亚洲国产一区二区精品专区| 欧美视频在线观看视频极品| 久久九九国产| 欧美成人伊人久久综合网| 亚洲一品av免费观看| 欧美一级午夜免费电影| 亚洲国产精品久久久久婷婷884| 亚洲精品美女在线| 国产亚洲成精品久久| 亚洲国产成人一区| 国产伦一区二区三区色一情| 欧美69视频| 欧美视频在线免费| 麻豆精品一区二区综合av| 欧美久久久久久久久久| 久久不射电影网| 欧美国产亚洲精品久久久8v| 亚洲欧美日韩国产中文| 美女主播精品视频一二三四| 亚洲欧美成人综合| 久久亚洲春色中文字幕| 亚洲专区一区| 免费看的黄色欧美网站| 久久国产乱子精品免费女| 欧美黄色影院| 久久日韩精品| 国产精品美女www爽爽爽| 欧美国产在线观看| 国产亚洲欧洲| 亚洲一区二区三区高清不卡| 亚洲国产日韩欧美一区二区三区| 一区二区三区三区在线| 亚洲日本va午夜在线电影| 欧美一区二区播放| 一区二区三区国产| 久久中文精品| 久久久综合精品| 国产欧美一区二区三区沐欲| 亚洲精品孕妇| 亚洲人成在线播放| 老司机久久99久久精品播放免费| 西瓜成人精品人成网站| 欧美精品在线观看91| 免费在线欧美黄色| 好吊色欧美一区二区三区四区| 亚洲一区尤物| 性久久久久久久久| 国产精品一二三四区| 亚洲永久视频| 香蕉久久夜色| 国产精品蜜臀在线观看| 一区二区激情视频| 亚洲一区观看| 国产精品成人久久久久| 一个色综合导航| 亚洲欧美日韩精品综合在线观看| 欧美三级午夜理伦三级中视频| 亚洲欧洲在线看| 99精品视频一区二区三区| 欧美激情四色| 99精品视频免费全部在线| 亚洲一区二区成人在线观看| 欧美精品日韩| 中文国产成人精品| 欧美一区二区三区精品电影| 国产日韩欧美| 久久精品亚洲精品| 欧美成人精品1314www| 日韩一级黄色大片| 国产精品毛片a∨一区二区三区|国 | 欧美一级欧美一级在线播放| 国产精品欧美日韩| 亚洲欧美成人网| 久久日韩粉嫩一区二区三区| 一区二区在线视频| 欧美黄色aa电影| 亚洲午夜三级在线| 久久国产手机看片| 亚洲国产精品999| 欧美精品免费播放| 亚洲在线一区| 亚洲第一网站| 小处雏高清一区二区三区 | 亚洲色无码播放| 国产欧亚日韩视频| 欧美成年人网| 亚洲一区国产视频| 亚洲电影av| 久久av免费一区| 亚洲国产一区二区三区青草影视 | 欧美美女福利视频| 亚洲综合视频在线| 欧美激情精品久久久久久大尺度| 一区二区三区 在线观看视频| 国产精品区一区二区三| 久久成人免费| 一区二区三区精品国产| 免费欧美电影| 欧美一区二区三区男人的天堂| 亚洲国产另类久久精品| 国产精品久久久91| 欧美国产日韩一区| 欧美在线三区| 在线视频精品一区| 欧美多人爱爱视频网站| 午夜伦理片一区| 亚洲乱码国产乱码精品精| 国产麻豆精品theporn| 欧美顶级大胆免费视频| 久久精品中文| 亚洲男人的天堂在线aⅴ视频| 亚洲国产一区二区a毛片| 久久久久网站| 欧美一区二区在线视频|