1506 : 경찰서

풀이

.

코드

#include <cstdio>

int n, ans, c[101], v[101];
char a[101][101];

int main() {
	int i, j, k;

	scanf("%d", &n);
	for (i = 0; i < n; i++) scanf("%d", &c[i]);
	for (i = 0; i < n; i++) scanf("%s", a[i]);

	for (k = 0; k < n; k++) for (i = 0; i < n; i++)
		for (j = 0; j < n; j++) a[i][j] |= a[i][k] & a[k][j];

	for (i = 0; i < n; i++) if (!v[i]) {
		k = c[i];
		for (j = 0; j < n; j++) if (a[i][j] & a[j][i] & 1) {
			if (k > c[j]) k = c[j];
			v[j] = 1;
		}
		ans += k;
	}

	printf("%d", ans);

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-06-24 21:54

Read more posts by this author