トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2020db1.cpp

#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++){
		if(d[i]==1){
			//printf("%d ", i);
			count++;
		}
	}
	printf("%d\n", count);
}

return 0;
}