結果
| 問題 |
No.307 最近色塗る問題多くない?
|
| コンテスト | |
| ユーザー |
nCk_cv
|
| 提出日時 | 2015-11-29 16:02:45 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,763 bytes |
| コンパイル時間 | 2,340 ms |
| コンパイル使用メモリ | 81,588 KB |
| 実行使用メモリ | 70,560 KB |
| 最終ジャッジ日時 | 2024-09-14 05:05:35 |
| 合計ジャッジ時間 | 29,280 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 3 WA * 16 RE * 11 TLE * 1 -- * 5 |
ソースコード
import java.util.*;
import java.util.Map.Entry;
import java.math.*;
import java.awt.geom.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int w = sc.nextInt();
char[][] map = new char[h][w];
for(int i = 0; i < h; i++) {
for(int j = 0; j < w; j++) {
map[i][j] = sc.next().charAt(0);
}
}
int[][] color = new int[h][w];
int id = 0;
for(int i = 0; i < h; i++) {
for(int j = 0; j < w; j++) {
color[i][j] = id++;
}
}
for(int i = 0; i < h; i++) {
for(int j = 0; j < w; j++) {
dfs(i,j,map,color,i,j,new boolean[h][w]);
}
}
int q = sc.nextInt();
for(int i = 0; i < q; i++) {
int r = sc.nextInt()-1;
int c = sc.nextInt()-1;
char x = sc.next().charAt(0);
int target = color[r][c];
for(int j = 0; j < h; j++) {
for(int k = 0; k < w; k++) {
if(color[j][k] == target)
map[j][k] = x;
}
}
dfs(r,c,map,color,r,c,new boolean[h][w]);
}
for(int i = 0; i < h; i++) {
System.out.print(map[i][0]);
for(int j = 1; j < w; j++) {
System.out.print(" " + map[i][j]);
}
System.out.println();
}
}
static int[] vx = {0,1,0,-1};
static int[] vy = {1,0,-1,0};
static void dfs(int a, int b, char[][] MAP, int[][] COLOR, int oa, int ob, boolean[][] al) {
if(a < 0 || b < 0 || a >= MAP.length || b >= MAP[a].length || MAP[a][b] != MAP[oa][ob] || al[a][b]) return;
COLOR[a][b] = COLOR[oa][ob];
al[a][b] = true;
for(int i = 0; i < 4; i++) {
int ty = vy[i] + a;
int tx = vx[i] + b;
if(ty < 0 || tx < 0 || ty >= MAP.length || tx >= MAP[tx].length || MAP[ty][tx] != MAP[oa][ob] || al[ty][tx]) return;
dfs(ty,tx,MAP,COLOR,oa,ob,al);
}
}
}
nCk_cv