#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void kode()
{
int v,i,j,e,min,a;
printf ("Masukan Jumlah Vertex : ");
scanf ("%d",&v);
e = v-1;
int edge[e][2],derajat[v+1];
for(i=0;i<=v;i++)
{
derajat[i]=0;
}
for(i=0;i<e;i++)
{
printf ("Masukan Edge Ke-%d\n",i+1);
scanf ("%d %d",&edge[i][0],&edge[i][1]);
derajat[edge[i][0]]++;
derajat[edge[i][1]]++;
}
printf ("\nTotal Derajat\n");
for (i=1;i<=v;i++)
{
printf ("Vertex ke-%d -> %d\n",i,derajat[i]);
}
printf ("\n");
printf ("Kode : ");
for(i=0;i<v-2;i++)
{
min=999;
for(j=0;j<e;j++)
{
if(derajat[edge[j][0]] && derajat[edge[j][1]]!=0)
{
if(derajat[edge[j][0]]==1)
{
if(min>edge[j][0])
{
min = edge[j][0];
a = j;
}
}
if(derajat[edge[j][1]]==1)
{
if(min>edge[j][1])
{
min = edge[j][1];
a = j;
}
}
}
}
derajat[edge[a][0]]--;
derajat[edge[a][1]]--;
if(derajat[edge[a][0]]==0)
{
printf ("%d ",edge[a][1]);
}
else{
printf ("%d ",edge[a][0]);
}
}
}
void tree()
{
int i,j,k,jumlah,x=0;
printf("Input jumlah verteks : ");
scanf("%d",&jumlah);
int verteks[jumlah];
int kode[jumlah-2];
//input kode pruffer
printf("\n Masukkan Kode Prufer Tree : ");
for(i=0;i<jumlah-2;i++)
scanf("%d",&kode[i]);
//untuk mendapatkan angka verteks
for(i=0;i<jumlah;i++){
verteks[i] = i+1;
}
//menampilkan angka yang dibandingkan
printf("\n Verteks = ");
for(i=0;i<jumlah;i++){
printf(" %d ",verteks[i]);
}
int hitung;
printf("\n");
printf("\n Rekonstruksi Kode Prufer :\n");
for(i=0;i<jumlah-2;i++){
for(j=0;j<jumlah;j++){
hitung=0;
//perulangan untuk menghitung angka yang sama
for(k=0;k<jumlah-2;k++){
if(kode[k]==verteks[j]){
hitung++;
}
}
//jika tidak ada angka yang sama
if(hitung==0){
break;
}
}
printf(" %d - %d ",kode[i],verteks[j]);
printf("\n");
kode[i]=0;
verteks[j]=0;
}
//verteks yang tersisa pada tree dengan nama variabel verteks
for(i=0;i<jumlah;i++){
if(verteks[i]!=0){
if(x==0)
{
printf(" %d",verteks[i]);
}
if(x==1)
{
printf(" - %d ",verteks[i]);
}
x++;
}
}
}
int main()
{
int pil;
do{
system("cls");
printf ("1. Tree ke Kode\n");
printf ("2. Kode ke Tree\n");
printf ("3. Exit\n");
printf ("Masukan Pilihan : ");
scanf ("%d",&pil);
switch(pil)
{
case 1:
kode();
getch();
break;
case 2:
tree();
getch();
break;
case 3:
exit(3);
break;
default:
printf ("Salah Input\n");
break;
}
}while(pil!=3);
return 0;
}
Langganan:
Posting Komentar (Atom)
wah sangat bermanfaat, trimakasi ya gan tugas saya jadi semakin mudah. sukses terus!
BalasHapuswah pas banget saya lagi perlu buat tugas uas saya
BalasHapusberguna banget cok, kleng emang.
BalasHapuskok gak work we !
BalasHapus