풀이
.
코드
#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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이