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

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

圖結構練習——最短路徑

2019-11-08 18:23:51
字體:
來源:轉載
供稿:網友

PRoblem Description

給定一個帶權無向圖,求節點1到節點n的最短路徑。

Input

輸入包含多組數據,格式如下。第一行包括兩個整數n m,代表節點個數和邊的個數。(n<=100)剩下m行每行3個正整數a b c,代表節點a和節點b之間有一條邊,權值為c。

Output

每組輸出占一行,僅輸出從1到n的最短路徑權值。(保證最短路徑存在)

Example Input

3 21 2 11 3 11 0

Example Output

10

 

#include<stdio.h>#include<string.h>#include<stdlib.h>#define maxn 110#define max 0x3f3f3f3fint df[maxn][maxn];int book[maxn];int dist[maxn];int n;void dijkstra(int vo){    int i,j,k,min,u;    for(i=1;i<=n;i++)    {        dist[i]=df[vo][i];    }    book[vo]=1;    dist[vo]=0;    for(i=2;i<=n;i++)    {        min=max; u=vo;        for(j=1;j<=n;j++)        {            if(dist[j]<min&&book[j]==0)            {                u=j;                min=dist[j];            }        }        book[u]=1;        for(k=1;k<=n;k++)        {            if((dist[k]>dist[u]+df[u][k])&&book[k]==0&&df[u][k]<max)            {                dist[k]=dist[u]+df[u][k];            }        }    }}int main(){    int m;    int i,j,u,v,w;    while(scanf("%d%d",&n,&m)!=EOF)    {        memset(df,max,sizeof(df));        memset(book,0,sizeof(book));        for(i=1;i<=n;i++)        {            df[i][i]=0;        }        while(m--)        {            scanf("%d%d%d",&u,&v,&w);            if(df[u][v]>w)                df[u][v]=df[v][u]=w;        }        dijkstra(1);        printf("%d/n",dist[n]);    }    return 0;}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朝阳市| 余江县| 东宁县| 武隆县| 宁波市| 资中县| 武安市| 肥乡县| 故城县| 景德镇市| 永州市| 麻城市| 吉林省| 唐河县| 瑞安市| 定结县| 定南县| 神农架林区| 商洛市| 莱阳市| 建水县| 马鞍山市| 吉木萨尔县| 金川县| 禄丰县| 湖南省| 贵州省| 永州市| 宿迁市| 邹平县| 天台县| 高碑店市| 晋宁县| 上犹县| 江门市| 南和县| 泰兴市| 博野县| 阿克陶县| 娄底市| 渑池县|