码迷,mamicode.com
首页 > 其他好文 > 详细

【最短路】 poj 2387

时间:2014-10-10 11:50:04      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   for   sp   div   on   

#include <iostream>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
using namespace std;
int map[1010][1010];
int dis[1010];
int n,pos,sum;
void init()
{
 for(int i=0; i<1001; i++)
 {
  for(int k=0; k<1001; k++)
   map[i][k] = INT_MAX;
  map[i][i] = 0;
 }
 for(int i=0; i<1001; i++)
  dis[i] = INT_MAX;
 sum = 0;
}
void Dijkstra()
{
 int used[1010];
 memset(used,0,sizeof(used));
 int now = pos;
 dis[now] = 0; used[now] = 1;
 for(int i=0; i<n; i++)
 {
  for(int k=1; k<=n; k++)
   if( map[now][k] != INT_MAX && dis[now] + map[now][k] < dis[k] )
    dis[k] = dis[now] + map[now][k];
  int min = INT_MAX;
  for(int k=1; k<=n; k++)
   if( dis[k] < min && !used[k] )
    min = dis[now = k];
  used[now] = 1;
 }
}
int main()
{
 int from,to,len,t;
 init();
 cin >> t >> n;
 pos = n;
 for(int i=1; i<=t; i++)
 {
  cin >> from >> to >> len;
  if( len < map[from][to] )
   map[from][to] = map[to][from] = len;
 }
 Dijkstra();
 cout << dis[1] << endl;
return 0;
}
 
 
 
#include<iostream>
using namespace std;
#define MAX 1005
const int oo=10000000;
int dist[MAX][MAX];
int close[MAX];
bool used[MAX];
int main()
{
    int N,T,i,j;
    int s,e,len;
    scanf("%d%d",&T,&N);
    memset(dist,0x7f,sizeof(dist));
    memset(used,false,sizeof(used));
    memset(close,0x7f,sizeof(close));
    for(i=1;i<=T;i++)
    {
        scanf("%d%d%d",&s,&e,&len);
        if(dist[s][e]>len)
            dist[s][e]=dist[e][s]=len;
    }
    for(i=2;i<=N;i++)
    {
        close[i]=dist[1][i];
    }
    used[1]=true;
    for(i=2;i<=N;i++)
    {
        int min=0;int mlen=oo;
        for(j=2;j<=N;j++)
        {
            if(!used[j]&&close[j]<mlen)
            {
                min=j,mlen=close[j];
            }
        }
        used[min]=true;
        for(j=2;j<=N;j++)
        {
            if(!used[j]&&dist[min][j]<oo)
            {
                int temp=dist[min][j]+close[min];
                if(temp<close[j])
                    close[j]=temp;
            }
        }
    }
    printf("%d\n",close[N]);
    return 0;
}

 

【最短路】 poj 2387

标签:style   blog   color   io   os   for   sp   div   on   

原文地址:http://www.cnblogs.com/balfish/p/4015109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!