Submission #2558278


Source Code Expand

package comPro.atcoder.arc;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Queue;
public class ATC001A {
	// public class Main {
	private static final PrintStream ps = System.out;
	private static final InputStream IS = System.in;
	private static final byte[] BUFFER = new byte[1024];
	private static int ptr = 0;
	private static int buflen = 0;

	public static void main(String[] args) {
		int H = ni();
		int W = ni();
		char[][] g = new char[H][W];
		int[][] d = new int[H][W];
		int sh = -1, sw = -1, gh = -1, gw = -1;
		
		for (int i = 0; i < H; i++) {
			Arrays.fill(d[i], -1);
		}
		
		for (int i = 0; i < H; i++) {
			g[i] = n().toCharArray();
			for (int j = 0; j < W; j++) {
				if (g[i][j] == 's') {
					sh = i;
					sw = j;
				} else if (g[i][j] == 'g') {
					gh = i;
					gw = j;
				}
			}
		}
		
		int[] mh = {1, -1, 0, 0,};
		int[] mw = {0, 0, 1, -1,};

		Queue<Integer> qh = new LinkedList<Integer>();
		Queue<Integer> qw = new LinkedList<Integer>();
		
		qh.add(sh);
		qw.add(sw);
		
		while (!qh.isEmpty()) {
			int h = qh.poll();
			int w = qw.poll();
			
			for (int i = 0; i < mh.length; i++) {
				int nh = h + mh[i];
				int nw = w + mw[i];
				if (   nh >= 0 && nh < H
				    && nw >= 0 && nw < W
				    && g[nh][nw] != '#'
				    && d[nh][nw] == -1) {
					d[nh][nw] = d[h][w] + 1;
					qh.add(nh);
					qw.add(nw);
				}
			}
		}
		
		System.out.println(d[gh][gw] >= 0 ? "Yes" : "No");
	}

	private static boolean hasNextByte() {
		if (ptr < buflen)
			return true;
		else {
			ptr = 0;
			try {
				buflen = IS.read(BUFFER);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0)
				return false;
		}
		return true;
	}

	private static int readByte() {
		if (hasNextByte())
			return BUFFER[ptr++];
		else
			return -1;
	}

	private static boolean isPrintableChar(int c) {
		return 33 <= c && c <= 126;
	}

	public static boolean hasNext() {
		while (hasNextByte() && !isPrintableChar(BUFFER[ptr]))
			ptr++;
		return hasNextByte();
	}

	public static String n() {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = readByte();
		while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	public static long nl() {
		if (!hasNext())
			throw new NoSuchElementException();
		long n = 0;
		boolean minus = false;
		int b = readByte();
		if (b == '-') {
			minus = true;
			b = readByte();
		}
		if (b < '0' || '9' < b)
			throw new NumberFormatException();
		while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b))
				return minus ? -n : n;
			else
				throw new NumberFormatException();
			b = readByte();
		}
	}

	public static int ni() {
		long nl = nl();
		if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException();
		return (int) nl;
	}

	public static double nextDouble() {
		return Double.parseDouble(n());
	}

	private static int[] nia(int n) {
		int[] a = new int[n];
		for (int i = 0; i < n; i++)
			a[i] = ni();
		return a;
	}
}

Submission Info

Submission Time
Task A - 深さ優先探索
User central_field
Language Java8 (OpenJDK 1.8.0)
Score 0
Code Size 3444 Byte
Status CE

Compile Error

./Main.java:11: error: class ATC001A is public, should be declared in a file named ATC001A.java
public class ATC001A {
       ^
1 error