//program dijkstra
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
const int memnum=20;
int a[memnum][memnum],i,j,max,n,p;
bool v[memnum]={false};
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cin>>a[i][j];
}
v[1]=true;
for(j=2;i<=n;j++)
{
max=65536;
for(i=1;i<=n;i++)
{
if(!v[i] && a[1][i] && a[1][i]<max)
{
max=a[1][i];
p=i;
}
v[p]=true;
}
for(i=1;i<=n;i++)
{
if(a[1][p] && a[p][i])
{
if(a[1][i]>a[1][p]+a[p][i] || !a[p][i])
a[1][i]=a[1][p]+a[p][i];
}
}
}
for(i=2;i<=n;i++)
cout<<a[1][i]<<" ";
system("PAUSE");
return EXIT_SUCCESS;
}
求解释哪里错了。。。
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
const int memnum=20;
int a[memnum][memnum],i,j,max,n,p;
bool v[memnum]={false};
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cin>>a[i][j];
}
v[1]=true;
for(j=2;i<=n;j++)
{
max=65536;
for(i=1;i<=n;i++)
{
if(!v[i] && a[1][i] && a[1][i]<max)
{
max=a[1][i];
p=i;
}
v[p]=true;
}
for(i=1;i<=n;i++)
{
if(a[1][p] && a[p][i])
{
if(a[1][i]>a[1][p]+a[p][i] || !a[p][i])
a[1][i]=a[1][p]+a[p][i];
}
}
}
for(i=2;i<=n;i++)
cout<<a[1][i]<<" ";
system("PAUSE");
return EXIT_SUCCESS;
}
求解释哪里错了。。。