离散题目14--判断集合的对称性
2017-05-24 08:28
260 查看
离散题目14
Time Limit: 1000MS Memory Limit: 65536KB
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
think:只要判断一下<x,y>存在,<y,x>也是存在的即可;
代码:#include <bits/stdc++.h> using namespace std; int main() { int n, m, i, u, v, flag; int ans[1004][1004]; while(scanf("%d %d", &n, &m) != EOF) { flag = 1; memset(ans, 0, sizeof(ans)); set<int> s; set<int>::iterator it1, it2; for(i = 0; i < m; i++) { scanf("%d %d", &u, &v); ans[u][v] = 1; s.insert(u); if(v != u) s.insert(v); } for(it1 = s.begin(); it1 != s.end(); it1++) { for(it2 = it1; it2 != s.end(); it2++) { if(ans[*it1][*it2] != ans[*it2][*it1]) { flag = 0; break; } } if(it2 != s.end()) break; } if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- 离散数学上机题目1(判断元素是否属于集合)
- sdutacm-oj--离散题目15--给出集合X、X上的关系R,判断关系R是不是传递的。
- 离散题目14 判断是否对称
- SDUT 离散题目2 判断一个集合元素是否重复
- SDUT 离散题目3 判断一个集合是另一个集合的子集
- 离散题目13(判断自反关系)
- SDUT 离散题目4 求两个集合的交集
- 离散题目集合--stl版题解--离散题目3
- 离散题目15(判断是否为传递关系(结构体))
- 离散题目14
- 离散数学之集合上关系的判断
- sdut离散题目14
- 【程序14】 TestDay.java 题目:输入某年某月某日,判断这一天是这一年的第几天?
- 离散题目3(判断是否为子集)
- 离散题目9--判断单射
- 离散题目13 判断是否自反
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 离散题目11--判断双射
- 离散题目9 判断单射
- 离散题目14