牛客小白月赛4 C病菌感染


题目描述

铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们。
培养皿可以被看成一个n*n的方格,最初病菌滴在了这n*n的格子中的某些格子,病菌的传染方式是这样的,如果一个方格与两个或多个被感染的方格相邻(两个方格相邻当且仅当它们只有一条公共边),
那么它就会被感染。现在铁子和顺溜想知道,最终所有的方格会不会都被感染。

输入描述:

第一行两个整数n,m。n表示方格的规格,m表示最初病菌所在的格子数。(1 ≤ n ≤ 1000, 0 < m < n)。
接下来m行每行两个整数xi,yi表示第xi行的第yi个格子有病菌。
数据保证不会有两个病菌初始时在同一个格子。

输出描述:

如果最终所有的方格都会被感染,输出 YES。
否则输出 NO。
示例1

输入

3 2
1 2
2 2

输出

NO

#include <iostream>
#include <cstring>
using namespace std;
int p[1005][1005];
int main() {
	int n, m, x, y;
	memset(p, 0, sizeof(p));
	cin>>n>>m;
	while(m--) {
		cin>>x>>y;
		p[x-1][y-1] = 1;
	}
	int flag = 1;
	for(int i = 1; i <= n; i++) {
		if(!p[i][i]) {
			flag = 0;
			break;
		}
	}
	if(flag) {
		cout<<"YES"<<endl;
	} else {
		cout<<"NO"<<endl; 
	}
	return 0;
}


猜你喜欢

转载自blog.csdn.net/adusts/article/details/80715548