Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

2个完全一样的函数一个能AC一个WA,哪位同学能看出问题来~~~

Posted by hao2 at 2009-03-09 20:57:21 on Problem 1273
OMG,WA20多次了啊~我打死也想不通啊~~~
A:这个不能过
void Dijkstra()
{
int mindis,i,j,u;
int s[MAXN];
for(i=1;i<=N;i++)
   {
   dis[i]=map[1][i];
   s[i]=0;
   if(i!=1&&dis[i]>0)
     pre[i]=1;
   else
     pre[i]=-1;
   }
s[1]=1;
for(i=2;i<=N;i++)
   {
   mindis=0;
   for(j=1;j<=N;j++)
      {
      if(s[j]==0&&dis[i]>mindis)
         {
         u=j;
         mindis=dis[j];
         }
      }
   if(mindis==0)
     return;
   s[u]=1;
   for(j=1;j<=N;j++)
      {
      if(s[j]==0&&map[u][j]>0&&dis[u]+map[u][j]>dis[j])
        {
        dis[j]=dis[u]+map[u][j];
        pre[j]=u;
        }
      }
   }
}

B:这个能过
    void Dijkstra()
    {
    int mindis,i,j,u;
    int s[MAXN];
    for(i=1;i<=N;i++)
        {
        dis[i]=map[1][i];
        s[i]=0;
        if(i!=1&&dis[i]>0)
           pre[i]=1;
        else 
           pre[i]=-1;
        }
    s[1]=1;
    for(i=2;i<=N;i++)
        {
        mindis=0;
        for(j=1;j<=N;j++)
           {
           if(s[j]==0&&dis[j]>mindis)
              {
              u=j;
              mindis=dis[j];
              }
            }
        if(mindis==0)
          return;
        s[u]=1;
        for(j=1;j<=N;j++)
           {
           if(s[j]==0&&map[u][j]>0&&dis[u]+map[u][j]>dis[j])
              {
              dis[j]=dis[u]+map[u][j];
              pre[j]=u;
              }
           }
         }
     }
如果看出来了请告诉我,万分感谢

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator