国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金阳县| 江陵县| 广河县| 通州市| 新沂市| 河南省| 拜泉县| 涡阳县| 石景山区| 长乐市| 濮阳市| 遂川县| 信阳市| 腾冲县| 凤城市| 宝兴县| 新田县| 日喀则市| 华坪县| 涪陵区| 新民市| 镇江市| 南昌市| 谷城县| 柘荣县| 郓城县| 蓬莱市| 丁青县| 迁西县| 乃东县| 玉田县| 凌云县| 慈利县| 丹棱县| 商丘市| 岳普湖县| 高州市| 丹凤县| 凤城市| 高雄县| 临颍县|