| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁能告诉我这个代码为什么会RE!#include <stdio.h>
#include <string.h>
#define maxint 1000000000
typedef struct node
{
int x;
int y;
}P;
typedef struct N
{
int x;
int y;
int step;
}Node;
int n,m;
int used[55][55];
char ch[55][55];
int d[5][3]={{1,0},{0,1},{-1,0},{0,-1}};
Node map[60000];
P point[60000];
int dis(P a,P b)
{
memset(used,0,sizeof(used));
int i,rear,front,flag,sum;
int dx,dy;
rear=-1;
front=0;
flag=1;
map[0].x=a.x;
map[0].y=a.y;
map[0].step=0;
if(a.x == b.x && a.y == b.y) return 0;
while(front > rear && flag)
{
rear++;
for(i=0;i<4;i++)
{
dx=map[rear].x+d[i][0];
dy=map[rear].y+d[i][1];
if(dx>=0 && dx<n && dy>=0 && dy<m && !used[dx][dy] && ch[dx][dy]!='#')
{
if(dx == b.x && dy== b.y)
{
flag=0;
break;
}
front++;
used[dx][dy]=1;
map[front].x=dx;
map[front].y=dy;
map[front].step = map[rear].step+1;
}
}
}
sum=map[rear].step+1;
return sum;
}
int main()
{
int T,i,j,k,temp,s,sum;
int c[60][60],lowcost[200],num[200];
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
memset(ch,'\0',sizeof(ch));
s=1;
sum=0;
getchar();
for(i=0;i<n;i++)
{
gets(ch[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(ch[i][j] == 'S' || ch[i][j] == 'A')
{
point[s].x = i;
point[s].y = j;
s++;
}
}
}
s--;
for(i=1;i<=s;i++)
{
for(j=1;j<=s;j++)
{
c[i][j] = dis(point[i],point[j]);
c[j][i] = dis(point[i],point[j]);
}
}
memset(num,0,sizeof(num));
num[1]=1;
for(i=2;i<=s;i++)
{
lowcost[i] = c[1][i];
}
for(i=1;i<s;i++)
{
j=1;
temp=maxint;
for(k=2;k<=s;k++)
{
if(lowcost[k] < temp && !num[k])
{
temp = lowcost[k];
j=k;
}
}
num[j]=1;
sum+=lowcost[j];
for(k=2;k<=s;k++)
{
if(c[j][k] < lowcost[k] && !num[k])
{
lowcost[k] = c[j][k];
}
}
}
printf("%d\n",sum);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator