Anda di halaman 1dari 5

Nono Suwarno

10510802 [ALGORITMA DIJKSTRA]


1. Code Program
Batasan program :
Jumlah node maksimal 10.
Jarak maksimal 99 karena 100 dianggap tidak terhubung (infinity).
Huruf yg di pakai node di ubah jadi angka, misal a = 1, b = 2, c = 3, dst.
//Dijkstra
//by Nono Suwarno
#include <stdio.h>
void main(){
int graf[10][10],hit[10][2];
int inf=100;
int n,b,k,ta,tt,min,imin;
//Input
printf("Banyak node = ");scanf("%d",&n);
for(b=0;b<n;b++){
for(k=0+b;k<n;k++){
if(b!=k){
do{
printf("Jarak node %d ke node %d (tidak
terhubung = %d) = ",b+1,k+1,inf);scanf("%d",&graf[b][k]);
graf[k][b]=graf[b][k];
}while(graf[b][k]<0 || graf[b][k]>100);
}
else{

Nono Suwarno
10510802 [ALGORITMA DIJKSTRA]
graf[b][k]=0;
}
}
}
printf("Node awal

= ");scanf("%d",&ta);

printf("Node akhir = ");scanf("%d",&tt);


//Menentukan jarak awal
for(b=0;b<n;b++){
hit[b][0]=graf[ta-1][b];
if(b==ta-1){
hit[b][1]=1;
}
else{
hit[b][1]=0;
}
}
//Membandingkan jarak terpendek
do{
min=100;
for(b=0;b<n;b++){
if(hit[b][1]==0){

Nono Suwarno
10510802 [ALGORITMA DIJKSTRA]
if(hit[b][0]<=min){
min=hit[b][0];
imin=b;
}
}
}
hit[imin][1]=1;
for(b=0;b<n;b++){
if(hit[b][1]==0){
if(hit[b][0]>hit[imin][0]+graf[imin][b]){
hit[b][0]=hit[imin][0]+graf[imin][b];
}
}
}
}while(imin!=tt-1);
//Cetak matrik jarak
printf("\n\n");
printf("Matrik jarak antar node :\n");
for(b=0;b<n;b++){
for(k=0;k<n;k++){
printf("%d\t",graf[b][k]);

Nono Suwarno
10510802 [ALGORITMA DIJKSTRA]
}
printf("\n");
}
//Cetak hasil
printf("\n\n");
printf("Jarak terpendek dari node %d ke node %d adalah
%d",ta,tt,hit[imin][0]);
getch();
}
2. Contoh Soal
5

4
1

3
1

2
5
7

3
8
2

Carilah jarak terpendek dari node 2 ke node 4 !

Nono Suwarno
10510802 [ALGORITMA DIJKSTRA]
3. Screenshoot Program

Anda mungkin juga menyukai