离散题目14 判断是否对称

来源:互联网 发布:淘宝最近怎么了 编辑:程序博客网 时间:2024/05/18 20:51

Problem Description

判断集合是不是对称的。

Input

首先输入两个数n,m表示集合中元素的个数,以及存在的关系数。

接下来1行包含n个以空格分隔的整数。

接下来m行,每行包含两个数a,b表示关系。

(1< = n < = 1000,1 < = a,b < = n,m < = n*(n-1)&& m < = 1000)

Output

对于每组输入,如果这个集合是对称的则输出“YES”,否则输出“NO”。(均不包含引号)

Example Input

5 8
1 1
1 2
2 1
3 3
2 3
3 2
4 5
5 4
5 9
1 1
1 2
2 1
3 3
2 3
3 2
4 5
5 4
5 1

Example Output

YES
NO

代码如下

#include<stdio.h>#include<string.h>int main(){    int n ,flag, m,x,y ,i ,j,a[1010][1010],b[1010][1010];    while(scanf("%d %d",&n,&m)!=EOF)    {        memset(a,0,sizeof(a));        memset(b,0,sizeof(b));        for(i = 0;i<m;i++)        {            scanf("%d %d",&x,&y);            a[x][y] = 1;            b[y][x] = 1;            b[x][y] = 1;        }        flag = 0;        for(i = 1;i<=n;i++)        {            for(j = 1;j<=n;j++)            {                if(a[i][j]!=b[i][j])                {                    flag = 1;                    break;                }            }        }        if(flag)            printf("NO\n");        else printf("YES\n");    }    return 0;}
原创粉丝点击