các bác ơi ! sao em code nó chạy rồi mà nó xuất ra vẫn sai các bác xem hộ em nha
fordbell.inp
515
01003
00338
0001-5
00200
00040
- Code:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#define max 50
#define trongsomax 1000
int n,s,t;
int truoc[max],d[max],a[max][max];
void nhapsolieu()
{
int i,j;
FILE*f;
f=fopen("fordbell.txt","rt");
fscanf (f,"%d%d%d",&n,&s,&t);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
fscanf(f,"%d",&a[i][j]);
if(a[i][j]==0)
a[i][j]=trongsomax;
}
fclose(f);
}
void insolieu()
{
cout<<"Dinh nguon la:"<<s<<endl;
cout<<"Dinh dich la:"<<t<<endl;
for(int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void inketqua()
{
cout<<"Duong di ngan nhat tu"<<s<<"den"<<t<<":";
cout<<t<<"<=";
int i=truoc[t];
while (i!=s)
{
cout<<i<<"<=";
i=truoc[i];
}
cout<<s<<endl;
cout<<"Do dai duong di ngan nhat la :"<<d[t]<<endl;
cout<<"Khoang cach tu dinh "<<s<<"den cac dinh khac la:";
for(i=1;i<=n;i++)
cout<<d[i]<<" ";
getch();
}
void ford_bellman()
{
for(int v=1;v<=n;v++)
{
truoc[v]=s;
d[v]=a[s][v];
}
d[s]=0;
for(int k=1;k<=n-2;k++)
for(int v=1;v<=n;v++)
for(int u=1;u<=n;u++)
if(d[v]>d[u]+a[u][v]&&v!=s)
{
d[v]=d[u]+a[u][v];
truoc[v]=u;
}
}
void main()
{
nhapsolieu();
insolieu();
ford_bellman();
inketqua();
}
fordbell.inp
515
01003
00338
0001-5
00200
00040
Được sửa bởi Vy Thanh Định ngày 4/12/2009, 22:05; sửa lần 1. (Reason for editing : Đưa bài viết vô thẻ code)