結果
| 問題 |
No.13 囲みたい!
|
| コンテスト | |
| ユーザー |
kuramu
|
| 提出日時 | 2016-02-11 13:18:58 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 767 ms / 5,000 ms |
| コード長 | 1,543 bytes |
| コンパイル時間 | 1,942 ms |
| コンパイル使用メモリ | 76,092 KB |
| 実行使用メモリ | 39,760 KB |
| 最終ジャッジ日時 | 2024-10-13 10:48:22 |
| 合計ジャッジ時間 | 4,505 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 |
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int W;
static int H;
static int[] dx = {-1,1,0,0};
static int[] dy = {0,0,-1,1};
public static void main(String[] args) {
BufferedReader stdReader =new BufferedReader(new InputStreamReader(System.in));
try {
String[] line = stdReader.readLine().split(" ");
W = Integer.parseInt(line[0]);
H = Integer.parseInt(line[1]);
int[][] board = new int[H][W];
for(int i=0;i<H;i++){
String[] temp = stdReader.readLine().split(" ");
for(int j=0;j<W;j++){
board[i][j] = Integer.parseInt(temp[j]);
}
}
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
if(isCheck(i,j,-1,-1,board,board[i][j])){
System.out.println("possible");
return;
}
}
}
System.out.println("impossible");
} catch (IOException e) {
e.printStackTrace();
}
}
public static boolean isCheck(int x,int y,int fromx,int fromy,int[][] board,int num){
board[x][y] = 0;
for(int i=0;i<dx.length;i++){
if(x+dx[i]>=0 && x+dx[i]<H && y+dy[i]>=0 && y+dy[i]<W && !(x+dx[i]==fromx && y+dy[i]==fromy)){
if(board[x+dx[i]][y+dy[i]]==0){
return true;
}
if(board[x+dx[i]][y+dy[i]]==num){
if(isCheck(x+dx[i], y+dy[i],x,y,board,num)){
return true;
}
}
}
}
board[x][y] = num;
return false;
}
}
kuramu