結果

問題 No.488 四角関係
ユーザー jp_ste
提出日時 2017-05-14 09:34:43
言語 Java
(openjdk 23)
結果
AC  
実行時間 1,404 ms / 5,000 ms
コード長 1,780 bytes
コンパイル時間 2,406 ms
コンパイル使用メモリ 78,284 KB
実行使用メモリ 48,804 KB
最終ジャッジ日時 2024-09-16 05:46:06
合計ジャッジ時間 9,908 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 22
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import java.util.*;
public class Main {
static int n;
static int m;
static boolean list[][];
static ArrayList<int[]> al = new ArrayList<int[]>();
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
m = scan.nextInt();
list = new boolean[n][n];
for(int i=0; i<m; i++) {
int left = scan.nextInt();
int right = scan.nextInt();
list[left][right] = true;
list[right][left] = true;
}
for(int i=0; i<n; i++) {
int connect[] = {i, -1, -1, -1};
solve(connect, 0);
}
System.out.println(al.size());
}
static void solve(int con[], int index) {
int left = con[index];
if(index == 3) {
int right = con[0];
if(list[left][right]) {
if((!list[con[0]][con[2]]) && (!list[con[1]][con[3]])) {
int copy[] = con.clone();
Arrays.sort(copy);
boolean flag = true;
for (int[] i : al) {
if (Arrays.equals(i, copy)) {
flag = false;
break;
}
}
if(flag) {
al.add(copy);
}
}
}
return;
}
for(int right=0; right<n; right++) {
if(index > 0) {
if(right == con[index-1]) continue;
}
if(list[left][right]) {
con[index+1] = right;
solve(con, index+1);
}
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0