結果
問題 | No.85 TVザッピング(1) |
ユーザー | holeguma |
提出日時 | 2015-08-14 17:31:25 |
言語 | Java21 (openjdk 21) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,172 bytes |
コンパイル時間 | 2,309 ms |
コンパイル使用メモリ | 78,192 KB |
実行使用メモリ | 58,864 KB |
最終ジャッジ日時 | 2024-07-18 09:26:42 |
合計ジャッジ時間 | 8,680 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 47 ms
37,060 KB |
testcase_01 | AC | 48 ms
37,248 KB |
testcase_02 | TLE | - |
testcase_03 | -- | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
ソースコード
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Comparator; import java.util.Deque; import java.util.HashMap; import java.util.PriorityQueue; import java.util.StringTokenizer; class Main{ static final PrintWriter out=new PrintWriter(System.out); static final int INF=Integer.MAX_VALUE/2; static int[] dx={-1,0,1,0}; static int[] dy={0,-1,0,1}; public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String line=""; while((line=br.readLine())!=null&&!line.isEmpty()){ StringTokenizer st=new StringTokenizer(line); int n=Integer.parseInt(st.nextToken()); int m=Integer.parseInt(st.nextToken()); int c=Integer.parseInt(st.nextToken()); boolean[][] visited=new boolean[n][m]; if(dfs(0,c%m==0?c/m-1:c/m,c%m==0?m-1:c%m-1,visited,c,n,m)) out.println("YES"); else out.println("NO"); out.flush(); } } private static boolean dfs(int depth,int a,int b,boolean[][] visited,int c,int n,int m){ if(depth>m*n) return false; if(m*a+b+1==c&&visited[a][b]){ if(check(visited,n,m)) return true; else return false; } visited[a][b]=true; for(int i=0;i<4;i++){ int na=a+dx[i]; int nb=b+dy[i]; if(na>=0&&nb>=0&&na<n&&nb<m&&(!visited[na][nb]||m*na+nb+1==c)){ if(dfs(depth+1,na,nb,visited,c,n,m)) return true; } } visited[a][b]=false; return false; } private static boolean check(boolean[][] visited,int n,int m){ for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(!visited[i][j]) return false; } } return true; } static class Pair{ int x; int y; Pair(int x,int y){ this.x=x; this.y=y; } } static class Edge{ int from; int to; int cost; Edge(int from,int to,int cost){ this.from=from; this.to=to; this.cost=cost; } Edge(int to,int cost){ this.to=to; this.cost=cost; } } static class Node{ int d; int v; Node(int d,int v){ this.d=d; this.v=v; } final static Comparator<Node> DISTANCE_ORDER=new DistanceOrderComparator(); static class DistanceOrderComparator implements Comparator<Node>{ public int compare(Node n1,Node n2){ return (n1.d>n2.d)?1:(n1.d<n2.d)?-1:0; } } } }