hdu 2544 最短路 (最短路)

来源:互联网 发布:最好玩的策略游戏知乎 编辑:程序博客网 时间:2024/05/16 09:37

题目:

        链接:点击打开链接

题意:

思路:

代码:

//Dijkstra算法版#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define INF 100000000const int N = 110;int n,m;int a,b,c;int w[N][N],dis[N];void dijkstra(){    int vis[N];    memset(vis,0,sizeof(vis));    for(int i=1; i<=n; i++)    {        dis[i] = w[1][i];    }    for(int i=1; i<n; i++)    {        int x,m = INF;        for(int y=1; y<=n; y++)        {            if(!vis[y] && dis[y] <= m)                m = dis[x=y];        }        if(m == INF)            return ;        vis[x] = 1;        for(int y=1; y<=n; y++)        {            if(dis[y] > dis[x] + w[x][y])                dis[y] = dis[x] + w[x][y];        }    }}int main(){    //freopen("input.txt","r",stdin);    while(scanf("%d%d",&n,&m) != EOF && (n || m))    {        for(int i=1; i<=n; i++)        {            for(int j=1; j<=n; j++)                w[i][j] = INF;        }        for(int i=1; i<=m; i++)        {            scanf("%d%d%d",&a,&b,&c);            w[a][b] = w[b][a] = c;        }        dijkstra();        printf("%d\n",dis[n]);    }    return 0;}

----------------------------------------------------------------------------------------

//Floyd算法版#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define INF 100000000const int N = 110;int n,m;int a,b,c;int dis[N][N];void floyd(){    for(int k=1; k<=n; k++)    {        for(int i=1; i<=n; i++)        {            for(int j=1; j<=n; j++)            {                if(dis[i][j] > dis[i][k] + dis[k][j])                    dis[i][j] = dis[i][k] + dis[k][j];            }        }    }}int main(){    //freopen("input.txt","r",stdin);    while(scanf("%d%d",&n,&m) != EOF && (n || m))    {        for(int i=1; i<=n; i++)        {            for(int j=1; j<=n; j++)                dis[i][j] = INF;        }        for(int i=1; i<=m; i++)        {            scanf("%d%d%d",&a,&b,&c);            dis[a][b] = dis[b][a] = c;        }        floyd();        printf("%d\n",dis[1][n]);    }    return 0;}

---------------------------------------------------------------------------

战斗,从不退缩;奋斗,永不停歇~~~~~~~~~~~~~~~~~~~~~

0 0
原创粉丝点击