結果
問題 | No.86 TVザッピング(2) |
ユーザー |
|
提出日時 | 2014-12-05 05:47:08 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 2,227 ms / 5,000 ms |
コード長 | 2,270 bytes |
コンパイル時間 | 3,752 ms |
コンパイル使用メモリ | 77,556 KB |
実行使用メモリ | 48,124 KB |
最終ジャッジ日時 | 2024-12-25 12:46:01 |
合計ジャッジ時間 | 12,541 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
import java.util.*;import static java.lang.Math.*;public class ppp {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();boolean ue[][]=new boolean[n][m];boolean sita[][]=new boolean[n][m];boolean hidari[][]=new boolean[n][m];boolean migi[][]=new boolean[n][m];boolean map[][]=new boolean[n][m];int sum=0;for(int i=0;i<n;i++){String s=sc.next();for(int j=0;j<m;j++){if(s.substring(j,j+1).equals(".")){map[i][j]=true;sum++;}}}for(int i=1;i<n;i++){for(int j=0;j<m;j++){ue[i][j]=map[i-1][j]|ue[i-1][j];sita[n-1-i][j]=map[n-i][j]|sita[n-i][j];}}for(int i=1;i<m;i++){for(int j=0;j<n;j++){hidari[j][i]=map[j][i-1]|hidari[j][i-1];migi[j][m-1-i]=map[j][m-i]|migi[j][m-i];}}int dx[]={0,-1,0,1};int dy[]={-1,0,1,0};for(int i=0;i<n;i++){for(int j=0;j<m;j++){for(int k=0;k<4;k++){if(!map[i][j])continue;int Y=i+dy[k];int X=j+dx[k];if(!(0<=X && X<m && 0<=Y && Y<n))continue;if(!map[i+dy[k]][j+dx[k]])continue;int nowx=j;int nowy=i;int d=k;int now=sum;boolean mapc[][]=new boolean[n][m];for(int p=0;p<n;p++){for(int w=0;w<m;w++){mapc[p][w]=map[p][w];}}while(now>0){int y=nowy+dy[d%4];int x=nowx+dx[d%4];if(!(0<=x && x<m && 0<=y && y<n) ||!mapc[nowy+dy[d%4]][nowx+dx[d%4]])d++;y=nowy+dy[d%4];x=nowx+dx[d%4];if(!(0<=x && x<m && 0<=y && y<n))break;nowy+=dy[d%4];nowx+=dx[d%4];if(!mapc[nowy][nowx])break;mapc[nowy][nowx]=false;now--;switch(d%4){case 0:if(migi[nowy][nowx])break;case 1:if(ue[nowy][nowx])break;case 2:if(hidari[nowy][nowx])break;case 3:if(sita[nowy][nowx])break;}}if(nowy==i && nowx==j && now==0){System.out.println("YES");return;}}}}System.out.println("NO");}}