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