티스토리 뷰
#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 |
- 안내
- 궁금한 점을 댓글로 남겨주시면 답변해 드립니다.