무엇이 문제인지 모르겠습니다. 게시판에 있는 반례는 전부해본거같습니다. 어떤 반례가 있을까요? 16%에서 틀렸다고 나옵니다.
#include <stdio.h>
int main(){ int comp[101]; int chk[101][101]; int n, i, j, link; scanf("%d", &n); scanf("%d", &link); comp[1]=1; for(i=0; i<link; i++){ int pc1, pc2; scanf("%d %d", &pc1, &pc2); chk[pc1][pc2]=1; chk[pc2][pc1]=1; } for (i=1; i<=n;i++){ for (j=1; j<=n; j++){ if (chk[i][j]) { comp[i] |=comp[j]; comp[j] |=comp[i]; } } } int ans=0; for(i=2;i<=n;i++) ans+=comp[i]; printf("%d\n", ans); return 0; }
gaelim 6년 전
무엇이 문제인지 모르겠습니다. 게시판에 있는 반례는 전부해본거같습니다. 어떤 반례가 있을까요? 16%에서 틀렸다고 나옵니다.
#include <stdio.h>
int main(){
int comp[101];
int chk[101][101];
int n, i, j, link;
scanf("%d", &n);
scanf("%d", &link);
comp[1]=1;
for(i=0; i<link; i++){
int pc1, pc2;
scanf("%d %d", &pc1, &pc2);
chk[pc1][pc2]=1;
chk[pc2][pc1]=1;
}
for (i=1; i<=n;i++){
for (j=1; j<=n; j++){
if (chk[i][j]) {
comp[i] |=comp[j];
comp[j] |=comp[i];
}
}
}
int ans=0;
for(i=2;i<=n;i++)
ans+=comp[i];
printf("%d\n", ans);
return 0;
}