国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C--最短路

2019-11-08 02:41:36
字體:
來源:轉載
供稿:網友

PRoblem Description

給出一個帶權無向圖,包含n個點,m條邊。求出s,e的最短路。保證最短路存在。

Input

多組輸入。對于每組數據。第一行輸入n,m(1<= n && n<=5*10^5,1 <= m && m <= 2*10^6)。接下來m行,每行三個整數,u,v,w,表示u,v之間有一條權值為w(w >= 0)的邊。最后輸入s,e。

Output

對于每組數據輸出一個整數代表答案。

Example Input

3 11 2 31 2

Example Output

3
SPFA算法:
#include<stdio.h>#include<string.h>#include<stdlib.h>#define maxn 500005#define max 0x3f3f3f3fstruct node{    int v;    int w;    int next;}map[4000005];int queue[maxn];int dist[maxn];int book[maxn];int head[maxn];int front,rear,n,cnt;void add(int u,int v,int w){    map[cnt].v=v;    map[cnt].w=w;    map[cnt].next=head[u];    head[u]=cnt++;}void spfa(int s){    int i,u,v,w;    for(i=0;i<=n;i++)    {        book[i]=0;        dist[i]=max;    }    dist[s]=0;    book[s]=1;    rear=(rear+1)%maxn;    queue[rear]=s;    while(front!=rear)    {        front=(front+1)%maxn;        u=queue[front];        book[u]=0;        for(i=head[u];i!=-1;i=map[i].next)        {            v=map[i].v;            w=map[i].w;            if(dist[v]>dist[u]+w)            {                dist[v]=dist[u]+w;                if(!book[v])                {                    rear=(rear+1)%maxn;                    queue[rear]=v;                    book[v]=1;                }            }        }    }}int main(){    int i,m,u,v,w,s,e;    while(scanf("%d%d",&n,&m)!=EOF)    {        front=rear=cnt=0;        memset(head,-1,sizeof(head));        while(m--)        {            scanf("%d%d%d",&u,&v,&w);            add(u,v,w);            add(v,u,w);        }        scanf("%d%d",&s,&e);        spfa(s);        printf("%d/n",dist[e]);    }    return 0;}
上一篇:hdu 2600排序

下一篇:LeetCode:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠东县| 琼结县| 白朗县| 岚皋县| 客服| 长子县| 伊金霍洛旗| 宁强县| 绥阳县| 四会市| 阿巴嘎旗| 旌德县| 德格县| 邮箱| 汉源县| 台东市| 临汾市| 鄂伦春自治旗| 胶南市| 绵竹市| 津市市| 元谋县| 峨山| 社旗县| 江孜县| 双柏县| 阿拉尔市| 军事| 涟源市| 东台市| 石阡县| 长丰县| 客服| 政和县| 康定县| 公安县| 马尔康县| 文安县| 吴江市| 江都市| 红原县|