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 に答える