0

我目前在 codechef做这个问题。

即使尝试了很多次,我也得到了“错误的答案”。由于它是一种竞争,我不想要任何直接的答案,但我只是想知道我的代码有什么问题。

#include <iostream>

using namespace std;
int T[260][260];
int num;
int main()
{
int i,j,I,ii,jj,o,c,b;
int S,G,D;
long long int M;
int dist[260][260];
int res1,res2,res3;
int tdis,mdis,dis;
cin>>num;
for(i=0;i<num;i++)
        {
                for(j=0;j<num;j++)
                {
                cin>>T[i][j];
                }
        }

 for (ii = 0; ii < num; ii++)
        for (jj = 0; jj < num; jj++)
            dist[ii][jj] = T[ii][jj];



  for (o = 0; o < num; o++)
    {

        for (b = 0; b < num; b++)
        {

            for (c = 0; c < num; c++)
            {

                if (dist[b][o] + dist[o][b] < dist[b][c])
                    dist[b][c] = dist[b][o] + dist[o][c];
            }
        }
    }          
cin>>M;
for(I=0;I<M;I++)
{
cin>>S;
cin>>G;
cin>>D;
res1=dist[S][G];
res2=dist[G][D];
tdis=res1+res2;
mdis=dist[S][D];
dis=tdis-mdis;
if(dis<0)
cout<<tdis<<" "<<0<<"\n";
else
cout<<tdis<<" "<<dis<<"\n";
}
return 0;
}

实际上,我是新手,任何指导都会有所帮助!

4

1 回答 1

0

实际上,在检查 dist[b][o]+dist[o][c] 时,您正在打错字(我想)

你写了 dist[b][o]+dist[o][b] !!!

于 2012-08-10T21:12:22.020 回答