记录编号 256482 评测结果 AAAAAAAAAA
题目名称 [USACO Jan09] 激光电话 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-30 19:09:05 内存使用 0.00 MiB
显示代码纯文本
#include<stdio.h>
int dp[102][102]={0};
char a[102][102]={0};
int min(int x,int y){return x<y?x:y;}
int _521()
{   
	freopen("lphone.in","r",stdin);
	freopen("lphone.out","w",stdout);
	int i,j,n,m,temp=1,x,y,_x,_y;
	bool flag=true;
	scanf("%d%d",&m,&n);
	for(i=1;i<=n;i++)
	{
		getchar();
		for(j=1;j<=m;j++)
		{
			dp[i][j]=100000;
			scanf("%c",&a[i][j]);
			if(a[i][j]=='C'&&flag)
			  a[i][j]='.',dp[i][j]=1,flag=false;
			if(a[i][j]=='C'&&!flag)
			  _x=i,_y=j,a[i][j]='.';
		}
	}
	while(1)
	{
		for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			if(dp[i][j]==temp)
			{
				x=i-1,y=j;
				while(a[x][y]=='.')
				  dp[x][y]=min(dp[x][y],temp+1),x--;
				x=i+1,y=j;
				while(a[x][y]=='.')
				  dp[x][y]=min(dp[x][y],temp+1),x++;
				x=i,y=j-1;
				while(a[x][y]=='.')
				  dp[x][y]=min(dp[x][y],temp+1),y--;
				x=i,y=j+1;
				while(a[x][y]=='.')
				  dp[x][y]=min(dp[x][y],temp+1),y++;
			}
		}
		if(dp[_x][_y]!=100000) break;
		temp++;
	}
	printf("%d\n",dp[_x][_y]-2);
}
int _520=_521();
int main(){;}