我目前在 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;
}
实际上,我是新手,任何指导都会有所帮助!