- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
#include <stdio.h>
int main(void)
{
int d[101];
while(1){
int m, n, p;
scanf("%d %d %d", &m, &n, &p);
if(m==0 && n==0 && p==0) break;
//感染者が出たかどうかのフラグ
int flag=0;
// 感染したかどうかのフラグをクリア
for(int i=1; i<=m; i++){
d[i]=0;
}
//pは感染
d[p]=1;
int a, b;
for(int i=0; i<n; i++){
scanf("%d %d", &a, &b);
// 時間順なので、感染者が出たらflag=1とする
if(a==p || b==p){
flag=1;
}
// 感染者が出ていて
if(flag){
// データの一人目感染してたら
if(d[a]==1){
d[b]=1;//二人目も感染
}
// データの二人目感染してたら
if(d[b]==1){
d[a]=1;//一人目も感染
}
}
}
//感染者数カウント
int count=0;
for(int i=1; i<=m; i++){
//printf("%d", d[i]);
if(d[i]==1){
//printf("%d ", i);
count++;
}
}
//printf("\n");
printf("%d\n", count);
}
return 0;
}