Initially all m lamps are turned off.
Switches change state only from "off" to "on". It means that if you press two or more switches connected to the same lamp then the lamp will be turned on after any of this switches is pressed and will remain its state even if any switch connected to this lamp is pressed afterwards.
It is guaranteed that if you push all n switches then all m lamps will be turned on.
Your think that you have too many switches and you would like to ignore one of them.
Your task is to say if there exists such a switch that if you will ignore (not use) it but press all the other n - 1 switches then all the m lamps will be turned on.
The first line of the input contains two integers n and m (1 ≤ n, m ≤ 2000) — the number of the switches and the number of the lamps.
The following n lines contain m characters each. The character ai, j is equal to '1' if the i-th switch turns on the j-th lamp and '0' otherwise.
It is guaranteed that if you press all n switches all m lamps will be turned on.
Print "YES" if there is a switch that if you will ignore it and press all the other n - 1 switches then all m lamps will be turned on. Print "NO" if there is no such switch.
4 5
10101
01000
00111
10000
YES
4 5
10100
01000
00110
00101
NO
Description
Input
Output
如果有一个开关,如果你忽略它并按下所有其他的n - 1开关,所有的m灯都将打开,输出“YES”, 如果没有这样的开关,输出“NO”。
Sample Input
Input
4 5 10101 01000 00111 10000
Output
YES
Input
4 5 10100 01000 00110 00101
Output
NO
解题思路:有n个开关,m盏灯,也就是邻接矩阵的行所代表的是开关,即为第i个开关控制第j盏灯,先求出每一列之和,即每一盏灯控制它的开关数,
然后对每一个开关遍历,如果去掉开关,能控制这一盏灯的开关数为0,则说明该开关并不是多余的并不能取掉,若是不影响则说明可以取掉
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { int n,m,flag,i,j; char x[2010]; int a[20][20]; int sum[2010]; memset(a,0,sizeof(a)); memset(sum,0,sizeof(sum)); scanf("%d%d",&n,&m); getchar(); for(i=1; i<=n; i++) { gets(x); for(j=1; j<=m; j++) { a[i][j]=x[j-1]-'0'; if(a[i][j]==1) { sum[j]++;//每一列之和 } } } flag=0; for(i=1; i<=n; i++)//行 { for(j=1; j<=m; j++)//列 { if(sum[j]-a[i][j]==0)//对于每一列来说去掉这一行会变成0,说明会有灯不受控制 { break; } } if(j==m+1)//找到一个一个开关不用也不会使灯受影响的 { flag=1; } } if(flag) { printf("YES "); } else { printf("NO "); } return 0; }