永发信息网

c++程序代码错误 敬请指正!!

答案:3  悬赏:0  手机版
解决时间 2021-07-26 07:51
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-07-25 18:59

问题地址: http://acm.jlu.edu.cn/joj/showproblem.php?pid=1002

我的代码:(存在编译错误,但小弟没找出来,汗!!)

#include<iostream>
using namespace std;

#define MAX 1000;

int main ()
{
int a[101][101],b[101][101],c[101];
int m,n,i,j,k,x,v;
int start_i,min_i;

while(cin>>m)
{
for(i=1;i<m;i++)
for(j=1;j<m;j++)
a[i][j]=MAX;
for(i=1;i<m;i++)
a[i][j]=MAX;

for(i=1;i<=m;i++)
{
cin>>n;
for(j=1;j<n;j++)
{
cin>>x>>v;
a[i][x]=v;
}
}

for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{
b[i][j]=a[i][j];
for(k=1;k<=m;k++)
if(b[i][j]>a[i][k]+a[k][j])
b[i][j]=a[i][k]+a[k][j];
}

for(i=1;i<=m;i++)
{
c[i]=b[i][1];
for(j=1;j<=m;j++)
if(c[i]<b[i][j])
c[i]=b[i][j];
}


min_i=c[1];
start_i=1;
for(i=1;i<m;i++)
if(min_i>c[i])
{
min_i=c[i];
start_i=i;
}

if(min_i==MAX)
cout<<"disjoint"<<endl;
else
cout<<start_i<<" "<<min_i<<endl;
}
return 0;
}

最佳答案
  • 五星知识达人网友:洎扰庸人
  • 2021-07-25 19:14
#define MAX 1000;改为#define MAX 1000
全部回答
  • 1楼网友:鱼忧
  • 2021-07-25 20:31

while(cin>>m)死循环;cin>>m的返回值是一个iostream类型的值,永远不是false

  • 2楼网友:我住北渡口
  • 2021-07-25 20:06
#define MAX 1000//; 1000后面的分号去掉,不然所有MAX都被替换成1000; if(min_i==1000;)<——当然有问题了,而且咋看没什么问题,不容易debug(用宏要小心)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯