AtCoder Beginner Contest 002

Submission #1510733

Source codeソースコード

import java.util.*;
 
/**
 * http://abc002.contest.atcoder.jp/tasks/abc002_4
 */
public class Main {
 
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		boolean graph[][] = new boolean[N][N];
		for(int i=0; i<M; i++){
			int n1 = sc.nextInt();
			int n2 = sc.nextInt();
			graph[n1-1][n2-1] = true;
			graph[n2-1][n1-1] = true;
		}
		sc.close();
	
		System.out.println(maxClusterDfs(graph));	
	}

	public static int maxCluster(boolean[][] graph){
		int nodeSize = graph.length;
		
		int result = 0;
		for(int bmask=1; bmask < (1<<nodeSize); ++bmask){
			List<Integer> candidate = new ArrayList<>();
			int tmp = bmask;
			int shift=0;
			while(tmp != 0){
				if((tmp&1)!=0)candidate.add(shift);
				tmp>>=1;
				++shift;
			}
			if(isFullyConnected(graph, candidate))result=Math.max(result,candidate.size());
		}
		return result;
	}

	public static boolean isFullyConnected(boolean[][] graph, List<Integer>  nodeList){
		for(int i=0; i < nodeList.size(); ++i){
			for(int j=i+1; j < nodeList.size(); ++j){
				if(!graph[nodeList.get(i)][nodeList.get(j)])return false;
			}
		}
		return true;
	}

	
	public static int maxClusterDfs(boolean[][] graph){
		Map<Integer, Integer> memoization = new HashMap<Integer,Integer>();
		
		boolean[] visited = new boolean[graph.length];
		int result = 0;
		for(int start = 0; start < graph.length; ++start){
			visited[start] = true;
			result = Math.max(1 + dfs(graph, start, visited, memoization), result);
			visited[start] = false;
		}
		return result;
	}
	
	public static boolean isFullyConnected(boolean[][] graph, boolean[] visited, int newNode){
		for(int i = 0; i < graph.length; ++i){
			if(visited[i] && !graph[i][newNode]) return false;
		}
		return true;
	}
	
	public static int dfs(boolean[][] graph, int currentNode, boolean[] visited, Map<Integer, Integer> memoization){
		int memoizationKey = (1 << currentNode) << graph.length;
		for(int i = 0; i < graph.length; ++i) if(visited[i]) memoizationKey |= (1 << i);
		if(memoization.containsKey(memoizationKey)) return memoization.get(memoizationKey);

		int result = 0;
		for(int nextNode = 0; nextNode < graph.length; ++nextNode){
			if(!graph[currentNode][nextNode])continue;
			if(visited[nextNode])continue;
			if(isFullyConnected(graph, visited, nextNode)){
				visited[nextNode] = true;
				result = Math.max(result, 1 + dfs(graph, nextNode, visited, memoization));
				visited[nextNode] = false;
			}
		}
		memoization.put(memoizationKey, result);
		return result;
	}
}


Submission

Task問題 D - 派閥
User nameユーザ名 hi_viv
Created time投稿日時
Language言語 Java8 (OpenJDK 1.8.0)
Status状態 AC
Score得点 100
Source lengthソースコード長 2655 Byte
File nameファイル名
Exec time実行時間 210 ms
Memory usageメモリ使用量 33896 KB

Test case

Set

Set name Score得点 / Max score Cases
all 100 / 100 00_sample_01.txt,00_sample_02.txt,00_sample_03.txt,00_sample_04.txt,test_01.txt,test_02.txt,test_03.txt,test_04.txt,test_05.txt,test_06.txt,test_07.txt,test_08.txt,test_09.txt,test_10.txt,test_11.txt,test_12.txt,test_13.txt,test_14.txt,test_15.txt,test_16.txt,test_17.txt,test_18.txt,test_19.txt,test_20.txt,test_21.txt,test_22.txt,test_23.txt,test_24.txt,test_25.txt,test_26.txt,test_27.txt,test_28.txt,test_29.txt,test_30.txt,test_31.txt,test_32.txt,test_33.txt,test_34.txt,test_35.txt,test_36.txt,test_37.txt,test_38.txt,test_39.txt,test_40.txt,test_41.txt,test_42.txt,test_43.txt,test_44.txt,test_45.txt,test_46.txt,test_47.txt,test_48.txt,test_49.txt,test_50.txt,test_51.txt,test_52.txt,test_53.txt,test_54.txt,test_55.txt,test_56.txt,test_57.txt,test_58.txt,test_59.txt,test_60.txt,test_61.txt,test_62.txt,test_63.txt,test_64.txt,test_65.txt,test_66.txt,test_67.txt,test_68.txt,test_69.txt,test_70.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
00_sample_01.txt AC 91 ms 21716 KB
00_sample_02.txt AC 92 ms 16976 KB
00_sample_03.txt AC 100 ms 21972 KB
00_sample_04.txt AC 92 ms 21712 KB
test_01.txt AC 91 ms 19028 KB
test_02.txt AC 92 ms 19540 KB
test_03.txt AC 95 ms 19924 KB
test_04.txt AC 91 ms 19796 KB
test_05.txt AC 91 ms 19796 KB
test_06.txt AC 91 ms 19796 KB
test_07.txt AC 91 ms 19796 KB
test_08.txt AC 110 ms 20692 KB
test_09.txt AC 117 ms 21332 KB
test_10.txt AC 115 ms 19796 KB
test_11.txt AC 92 ms 18900 KB
test_12.txt AC 123 ms 21844 KB
test_13.txt AC 94 ms 19924 KB
test_14.txt AC 90 ms 20688 KB
test_15.txt AC 96 ms 21332 KB
test_16.txt AC 110 ms 20052 KB
test_17.txt AC 126 ms 25800 KB
test_18.txt AC 106 ms 20052 KB
test_19.txt AC 123 ms 21636 KB
test_20.txt AC 174 ms 28868 KB
test_21.txt AC 107 ms 22100 KB
test_22.txt AC 146 ms 23956 KB
test_23.txt AC 156 ms 28464 KB
test_24.txt AC 203 ms 32040 KB
test_25.txt AC 90 ms 19796 KB
test_26.txt AC 116 ms 20052 KB
test_27.txt AC 111 ms 19028 KB
test_28.txt AC 109 ms 23764 KB
test_29.txt AC 100 ms 19796 KB
test_30.txt AC 113 ms 22100 KB
test_31.txt AC 125 ms 20972 KB
test_32.txt AC 120 ms 21972 KB
test_33.txt AC 153 ms 24732 KB
test_34.txt AC 129 ms 23252 KB
test_35.txt AC 149 ms 24144 KB
test_36.txt AC 179 ms 30608 KB
test_37.txt AC 92 ms 18900 KB
test_38.txt AC 176 ms 31228 KB
test_39.txt AC 123 ms 22484 KB
test_40.txt AC 111 ms 21716 KB
test_41.txt AC 167 ms 26700 KB
test_42.txt AC 210 ms 33896 KB
test_43.txt AC 113 ms 22612 KB
test_44.txt AC 111 ms 20048 KB
test_45.txt AC 128 ms 19540 KB
test_46.txt AC 156 ms 25272 KB
test_47.txt AC 161 ms 24604 KB
test_48.txt AC 207 ms 32752 KB
test_49.txt AC 100 ms 21716 KB
test_50.txt AC 96 ms 19668 KB
test_51.txt AC 113 ms 19924 KB
test_52.txt AC 113 ms 19540 KB
test_53.txt AC 114 ms 19924 KB
test_54.txt AC 101 ms 21972 KB
test_55.txt AC 116 ms 23124 KB
test_56.txt AC 114 ms 24660 KB
test_57.txt AC 133 ms 24276 KB
test_58.txt AC 133 ms 23956 KB
test_59.txt AC 158 ms 25092 KB
test_60.txt AC 168 ms 28688 KB
test_61.txt AC 183 ms 28024 KB
test_62.txt AC 91 ms 19796 KB
test_63.txt AC 103 ms 22356 KB
test_64.txt AC 113 ms 20180 KB
test_65.txt AC 103 ms 20308 KB
test_66.txt AC 113 ms 20052 KB
test_67.txt AC 109 ms 20180 KB
test_68.txt AC 101 ms 17748 KB
test_69.txt AC 107 ms 21844 KB
test_70.txt AC 104 ms 22356 KB