結果
| 問題 |
No.307 最近色塗る問題多くない?
|
| コンテスト | |
| ユーザー |
nCk_cv
|
| 提出日時 | 2015-11-28 00:23:12 |
| 言語 | Java (openjdk 23) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,407 bytes |
| コンパイル時間 | 2,487 ms |
| コンパイル使用メモリ | 83,452 KB |
| 実行使用メモリ | 70,000 KB |
| 最終ジャッジ日時 | 2024-09-14 00:37:57 |
| 合計ジャッジ時間 | 13,734 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 8 TLE * 1 -- * 27 |
ソースコード
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++) {
//if(color[i][j] != id) {
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) {
ArrayDeque<Data> queue = new ArrayDeque<Data>();
queue.addLast(new Data(a,b,MAP,COLOR,oa,ob,al));
while(!queue.isEmpty()) {
Data tmp = queue.pollFirst();
int Ka = tmp.a;
int Kb = tmp.b;
char[][] KMAP = tmp.MAP;
int[][] KCOLOR = tmp.COLOR;
int Koa = tmp.oa;
int Kob = tmp.ob;
boolean[][] Kal = tmp.al;
if(Ka < 0 || Kb < 0 || Ka >= KMAP.length || Kb >= KMAP[Ka].length || KMAP[Ka][Kb] != KMAP[Koa][Kob] || Kal[Ka][Kb]) continue;
KCOLOR[Ka][Kb] = KCOLOR[Koa][Kob];
Kal[Ka][Kb] = true;
for(int i = 0; i < 4; i++) {
int ty = vy[i] + Ka;
int tx = vx[i] + Kb;
queue.addLast(new Data(ty,tx,KMAP,KCOLOR,Koa,Kob,Kal));
}
}
}
static class Data {
int a;
int b;
char[][] MAP;
int[][] COLOR;
int oa;
int ob;
boolean[][] al;
Data(int a, int b, char[][] MAP, int[][] COLOR, int oa, int ob, boolean[][] al) {
this.a = a;
this.b = b;
this.MAP = MAP;
this.COLOR = COLOR;
this.oa = oa;
this.ob = ob;
this.al = al;
}
}
}
nCk_cv