现在的位置: 首页 > 综合 > 正文

POJ 2387 Til the Cows Come Home 最短路-Dijkstra

2013年10月04日 ⁄ 综合 ⁄ 共 840字 ⁄ 字号 评论关闭

题目地址: http://poj.org/problem?id=2387

模板题,直接上代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
using namespace std;

/*
freopen("input.txt",  "r", stdin);
freopen("output.txt", "w", stdout);
*/
const int INF=0x3f3f3f3f;
int n;
int edge[1005][1005],s[1005],dis[1005];

void Dijkstra(int be)
{
    int i,j,temp,k;
    for(i=1;i<=n;i++)
    {
        dis[i]=edge[be][i];
        s[i]=0;
    }
    s[be]=1;dis[be]=0;
    for(i=1;i<=n;i++)
    {
        temp=INF;k=1;
        for(j=1;j<=n;j++)
            if(!s[j]&&dis[j]<temp)
            {
                k=j;temp=dis[j];
            }
        s[k]=1;
        for(j=1;j<=n;j++)
            if(!s[j]&&dis[j]>dis[k]+edge[k][j])
                dis[j]=dis[k]+edge[k][j];
    }
}

int main()
{
    int i,j,t;
    while(cin>>t>>n)
    {
        memset(edge,INF,sizeof(edge));
        while(t--)
        {
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            if(edge[a][b]>c)
                edge[a][b]=edge[b][a]=c;
        }
        Dijkstra(n);
        printf("%d\n",dis[1]);
    }
    return 0;
}

抱歉!评论已关闭.