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

那位大牛帮我看看我哪儿错了!不胜感激!

Posted by 0705020329 at 2009-08-28 20:28:34 on Problem 3026
我都错了快二十次了!可是就是找不出来哪儿错了!修改了一次又一次!晕惨了!
#include<iostream>
using namespace std;
#define maxx 1000000000
int t,n,m,node[201][201],dist[201],visit[201],num[201][2],mark[51][51];
char str[81][81];
int step[4][2]={1,0,-1,0,0,1,0,-1};
void bfs(int a,int b,int sk,int ne)
{
    int q[3001],qx[3001],qy[3001],vist[51][51],xx,yy,i,j,t,e,kk=0;
    for(i=0;i<n;i++)
      for(j=0;j<m;j++)
         vist[i][j]=0;
    vist[b][a]=1;
    qx[0]=a,qy[0]=b,q[0]=0;
    str[b][a]='#';
    t=0,e=1;
    while(t<e)
    {
        for(i=0;i<4;i++)
        {
            xx=qx[t]+step[i][0];
            yy=qy[t]+step[i][1];
            if(xx>=0&&xx<m&&yy>=0&&yy<n&&vist[yy][xx]==0&&str[yy][xx]!='#')
            {
                   vist[yy][xx]=1;
                   qx[e]=xx,qy[e]=yy;
                   q[e]=q[t]+1;
                   if(str[yy][xx]=='A'||str[yy][xx]=='S')
                         node[mark[yy][xx]][sk]=node[sk][mark[yy][xx]]=q[e],kk++;
                   e++;
            }
        }
        if(kk==ne)
          break;
        t++;
    }
}
void prime(int len)
{
     int i,j,k,mine,sum=0;
     for(i=1;i<len;i++)
       node[i][i]=0;
     for(i=1;i<len;i++) 
         dist[i]=node[1][i],visit[i]=0;
     visit[1]=1;
     for(i=2;i<len;i++)
     {
            mine=maxx;
            for(j=1;j<len;j++)
            {
               if(visit[j]==0&&dist[j]<mine)
               {
                    mine=dist[j];
                    k=j;
               }
            }
            sum+=mine;
            visit[k]=1;
            for(j=1;j<len;j++)
               if(visit[j]==0&&node[k][j]<dist[j])
                  dist[j]=node[k][j];               
     }
     printf("%d\n",sum);
}
int main()
{
    scanf("%d",&t);
    int i,j,len;
    while(t--)
    {
        len=1;
        scanf("%d%d",&m,&n);
        getchar();
        for(i=0;i<n;i++)
            gets(str[i]);
         for(i=0;i<n;i++)
              for(j=0;j<m;j++)
                  if(str[i][j]=='A'||str[i][j]=='S')
                  {
                     mark[i][j]=len;
                     num[len][0]=i,num[len][1]=j;
                     len++;
                  }
        for(i=1;i<len;i++)
           for(j=i;j<len;j++)
              node[i][j]=node[j][i]=maxx;
        for(i=1;i<len;i++)
               bfs(num[i][1],num[i][0],i,len-i-1); 
        prime(len);
    }
    system("pause");
    return 0;
}

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