티스토리 뷰
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
enum Boolean{FALSE, TRUE};
#define nmax 100
#define MAX 100000
int 
    adjacant[10][10]={
 {0, 1500, 250, MAX, MAX, MAX, MAX, MAX, MAX, MAX},
 {1500, 0, 1000, 1200, 1400, MAX, MAX, MAX, MAX, MAX},
 {250, 1000, 0, MAX, MAX, MAX, MAX, 1400, MAX, 900},
 {MAX, 1200, MAX, 0, MAX, MAX, 800, 500, 1000, MAX},
 {MAX, 1400, MAX, MAX, 0, 1200, MAX, MAX, MAX, MAX},
 {MAX, MAX, MAX, MAX, 1200, 0, 300, MAX, MAX, MAX},
 {MAX, MAX, MAX, 800, MAX, 300, 0, MAX, 300, MAX},
 {MAX, MAX, 1400, 500, MAX, MAX, MAX, 0, 1700, 1000},
 {MAX, MAX, MAX, 1000, MAX, MAX, 300, 1700, 0, MAX},
 {MAX, MAX, 900, MAX, MAX, MAX, MAX, 1000, MAX, 0}
 };
class Graph{
public:
 Graph(void){set();};
 void ShortestPath(const int n, const int v);
 int choose(const int a);
 void set();
 
 int length[nmax][nmax];
 int dist[nmax];
 bool s[nmax];
};
void Graph::ShortestPath(const int n, const int v){
 for(int i=0; i<n; i++){
  s[i] = false, dist[i] = length[v][i];
 }
 s[v] = true;
 dist[v] = 0;
 for (i=0; i<n-2; i++){
  int u = choose(n);
  s[u] = true;
  for(int w=0; w<n; w++)
   if(!s[w])
         if(dist[u] + length[u][w] < dist[w])
     dist[w] = dist[u] + length[u][w];
 }
}
int Graph::choose(const int a){
 for(int u=1; u<a; u++)if(!s[u]){
  for(int i=1; i<a-2; i++){
   if(!s[i+1]){
   if(dist[u]>dist[i+1])u=i+1;
   else if(dist[u]==dist[u+i])u=i;
   }   
  }
  return u;
 }
return 0; 
}
void Graph::set()
{
 for(int j=0; j<10; j++){
  for(int k=0; k<10; k++){
  length[j][k]=adjacant[j][k];
  }
 }
}
void main(void)
{
 
 Graph A;
 A.ShortestPath(10,0);
 cout<<"Boston에서 Chicago까지의 최단거리는 "<<A.dist[1]<<endl;
 cout<<"Boston에서 New York까지의 최단거리는 "<<A.dist[2]<<endl;
 cout<<"Boston에서 Denver까지의 최단거리는 "<<A.dist[3]<<endl;
 cout<<"Boston에서 San Francisco까지의 최단거리는 "<<A.dist[6]<<endl;
 cout<<"Boston에서 New Orleans까지의 최단거리는 "<<A.dist[7]<<endl;
 cout<<"Boston에서 Los Angels까지의 최단거리는 "<<A.dist[8]<<endl;
 cout<<"Boston에서 Miami까지의 최단거리는 "<<A.dist[9]<<endl;
}
'기억하자정보 > 알고리즘' 카테고리의 다른 글
| 최단경로알고리즘 구현 (0) | 2006.12.07 | 
|---|---|
| [알고리즘] C로 구현한 다익스트라 최단경로.. (1) | 2006.12.07 | 
| 최단거리 알고리즘 참고 사이트 (0) | 2006.12.07 | 
| 최단경로 알고리즘 (0) | 2006.12.07 | 
| 그래프의 최단거리 알고리즘 (0) | 2006.12.07 | 
- 안내
- 궁금한 점을 댓글로 남겨주시면 답변해 드립니다.