【最短路】 poj 2387

#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;
}

 

posted @ 2014-10-10 10:03  balfish  阅读(160)  评论(0编辑  收藏  举报