您的位置:首页 > 其它

Hud 2544 最短路 [基础最短路dijksra||bellman-ford]

2013-11-05 21:29 477 查看
题目连接:点击打开链接

基础的最短路,Dijkstra again。比较水,但是,这是最开始。

该题就是裸的基础最短路

什么不说,上代码:

#include<cstdio>
#include<cstring>
#define INF 0xfffff

const int N=105;

int Map

;
bool vis
;
int dis
;
int n,m;

void Init()
{
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    Map[i][j]=INF;
}

void Dijkstra(int u0)
{
    memset(vis,0,sizeof(vis));
    vis[u0]=true;
    for(int i=1;i<=n;i++)
    dis[i]=Map[u0][i];
    dis[u0]=0;
    for(int i=1;i<=n;i++)
    {
        int temp=INF,t=u0;
        for(int j=1;j<=n;j++)
        if(!vis[j]&&dis[j]<temp)
        {temp=dis[j];t=j;}
        if(t==u0) return ;
        vis[t]=true;
        for(int j=1;j<=n;j++)
        if(!vis[j]&&dis[j]>dis[t]+Map[t][j])//修正路线.
        dis[j]=dis[t]+Map[t][j];
    }
}

int main()
{
    while(scanf("%d%d",&n,&m)&&(n+m))
    {
        Init();
        int A,B,C;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&A,&B,&C);
            Map[A][B]=C;
            Map[B][A]=C;
        }
        Dijkstra(1);
        printf("%d\n",dis
);
    }
}

Good!

bellman-ford AC again:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0xffffff

const int N=104;
const int M=10004;
int dis
;
int n,m;
struct Rode
{
    int begin_point;
    int end_point;
    int need_time;
}rode[M];

void bellman_ford()
{
    for(int i=1;i<=n;i++)
    dis[i]=INF;
    dis[1]=0;
    for(int i=1;i<n;i++)
    {
        for(int j=1;j<=m*2;j++)
        {
            int be=rode[j].begin_point,en=rode[j].end_point,co=rode[j].need_time;
            if(dis[en]>dis[be]+co)
            dis[en]=dis[be]+co;
        }
    }
}

int main()
{
    while(scanf("%d%d",&n,&m)&&(n+m))
    {
        Init();
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&rode[i].begin_point,&rode[i].end_point,&rode[i].need_time);
            rode[i+m].begin_point=rode[i].end_point;
            rode[i+m].end_point=rode[i].begin_point;
            rode[i+m].need_time=rode[i].need_time;
        }
        bellman_ford();
        printf("%d\n",dis
);
    }
}
come on!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: