Submission #17307

#TimeUsernameProblemLanguageResultExecution timeMemory
17307gs14004지도 색칠하기 (GA3_map)C++14
120 / 120
1114 ms1084 KiB
#include <algorithm>
using namespace std;

bool adj[20][20];
int col[20];

int bits, n;
bool bad;

void dfs(int x, int p){
	if(col[x]){
		bad |= (col[x] != p);
		return;
	}
	col[x] = p;
	for(int i=0; i<n; i++){
		if(adj[x][i] && (bits >> i) % 2 == (bits >> x) % 2){
			dfs(i, 3-p);
		}
	}
}

long long NumberOfMaps (int N, int M, int *A, int *B){
	n = N;
	for(int i=0; i<M; i++){
		adj[A[i]-1][B[i]-1] = 1;
		adj[B[i]-1][A[i]-1] = 1;
	}
	long long sum = 0;
	for(int i=0; i<(1<<(N-1)); i++){
		fill(col, col + N, 0);
		bits = i;
		bad = 0;
		int cnt = 0;
		for(int i=0; i<N; i++){
			if(col[i]) continue;
			dfs(i, 1);
			if(bad) break;
			cnt++;
		}
		if(bad) continue;
		sum += (2 << cnt);
	}
	return sum;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...