Mình đang làm giải thuật Kruskal nhưng tới phần in ra thì hiển thị không như mình mong muốn như phần nhập, các bạn làm ơn vào giúp đỡ giùm mình. code
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#define Max 100
class Kruskal {
private:
struct TTCanh{
int u,v,trongso;}Canh[Max];
int sodinh;
int cost;
int k;
public:
void NhapTT();
void SapXep();
void InTT();
Kruskal();
};
Kruskal::Kruskal() {
sodinh = 0;
cost = 0;
k=1;
};
void Kruskal::NhapTT(){
int i,j;
cout<<"\n Nhap vao do dinh cua do thi: ";
cin>>sodinh;
for(i=1;i<=sodinh;i++)
for(j=1;j<i;j++)
{
cout << "\n Canh[" <<(char)(j+64) << "][" <<(char)(i+64)<< "] : ";
cin>>cost;
}
if (cost>0)
{
Canh[k].u = i;
Canh[k].v = j;
Canh[k++].trongso = cost;
k++;
}
};
void Kruskal::SapXep(){
struct TTCanh temp;
for(int i = 1; i < k; i++)
for(int j = 1; j < k-i; j++)
if(Canh[j].trongso>Canh[j+1].trongso)
{
temp = Canh[j];
Canh[j] = Canh[j+1];
Canh[j+1] = temp;
}
};
void Kruskal::InTT(){
cout<<"\nSo canh cua do thi: "<<k-1;
cout<<"\n";
if ((k-1) < (sodinh-1)) cout<<"\nDo thi vua nhap khong lien thong => khong the tim cay khung nho nhat";
else
for(int i = 1; i <= k-1; i++)
cout<<" ["<<Canh[i].u<<"]["<<Canh[i].v<<"] = "<<Canh[i].trongso<<endl;
};
int main(){
Kruskal k;
k.NhapTT();
k.SapXep();
k.InTT();
getch();
}