A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the clique are adjacent. A maximal clique is a clique that cannot be extended by including one more adjacent vertex. (Quoted from https://en.wikipedia.org/wiki/Clique_(graph_theory))

Now it is your job to judge if a given subset of vertices can form a maximal clique.

Input Specification:

Each input file contains one test case. For each case, the first line gives two positive integers Nv (≤ 200), the number of vertices in the graph, and Ne, the number of undirected edges. Then Ne lines follow, each gives a pair of vertices of an edge. The vertices are numbered from 1 to Nv.

After the graph, there is another positive integer M (≤ 100). Then M lines of query follow, each first gives a positive number K (≤ Nv), then followed by a sequence of K distinct vertices. All the numbers in a line are separated by a space.

Output Specification:

For each of the M queries, print in a line Yes if the given subset of vertices can form a maximal clique; or if it is a clique but not a maximal clique, print Not Maximal; or if it is not a clique at all, print Not a Clique.

Sample Input:

  1. 8 10
  2. 5 6
  3. 7 8
  4. 6 4
  5. 3 6
  6. 4 5
  7. 2 3
  8. 8 2
  9. 2 7
  10. 5 3
  11. 3 4
  12. 6
  13. 4 5 4 3 6
  14. 3 2 8 7
  15. 2 2 3
  16. 1 1
  17. 3 4 3 6
  18. 3 3 2 1

Sample Output:

  1. Yes
  2. Yes
  3. Yes
  4. Yes
  5. Not Maximal
  6. Not a Clique
  7.  
  8. Solution
      题意是,在给出的连通图中,判断查询的点是不是两两相连?如果是,那就是Clique,然后在判断这些查询点是是不是最大的集,即没有其他的点与查询的点是两两相连的
      若存在,则不是最大集
      
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {
  6. int n, m, k;
  7. cin >> n >> m;
  8. vector<vector<int>>v(n + , vector<int>(n + , ));
  9. while (m--)
  10. {
  11. int a, b;
  12. cin >> a >> b;
  13. v[a][b] = v[b][a] = ;
  14. }
  15. cin >> k;
  16. while (k--)
  17. {
  18. cin >> m;
  19. vector<int>temp(m);
  20. vector<bool>otherNum(n + , true);
  21. for (int i = ; i < m; ++i)
  22. {
  23. cin >> temp[i];
  24. otherNum[temp[i]] = false;
  25. }
  26. bool flag = true, isMax = true;
  27. for (int i = ; i < m && flag; ++i)//判断查询的点是不是两两相连
  28. for (int j = i + ; j < m; ++j)
  29. if (v[temp[i]][temp[j]] == )
  30. flag = false;
  31. if (flag == false)
  32. cout << "Not a Clique" << endl;
  33. else
  34. {
  35. for (int i = ; i <= n && isMax; ++i)//判断查询之外的点与查询中的点是不是两两相连
  36. {
  37. if (otherNum[i] == false)continue;//在查询中的点不用判断
  38. int nums = ;
  39. for (int j = ; j < m; ++j)
  40. if (v[i][temp[j]] == )
  41. ++nums;
  42. if (nums == m)
  43. isMax = false;
  44. }
  45. if (isMax)
  46. cout << "Yes" << endl;
  47. else
  48. cout << "Not Maximal" << endl;
  49. }
  50. }
  51. return ;
  52. }
  1.  

PAT甲级——A1141 PATRankingofInstitution【25】的更多相关文章

  1. PAT甲级——A1141 PATRankingofInstitution

    After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...

  2. PAT 甲级 1010 Radix (25)(25 分)进制匹配(听说要用二分,历经坎坷,终于AC)

    1010 Radix (25)(25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 ...

  3. PAT 甲级1003 Emergency (25)(25 分)(Dikjstra,也可以自己到自己!)

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  4. pat 甲级 1010. Radix (25)

    1010. Radix (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of ...

  5. pat 甲级 1078. Hashing (25)

    1078. Hashing (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task of t ...

  6. PAT 甲级 1003. Emergency (25)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...

  7. PAT 甲级 1078 Hashing (25 分)(简单,平方二次探测)

    1078 Hashing (25 分)   The task of this problem is simple: insert a sequence of distinct positive int ...

  8. PAT 甲级 1070 Mooncake (25 分)(结构体排序,贪心,简单)

    1070 Mooncake (25 分)   Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autum ...

  9. PAT 甲级 1032 Sharing (25 分)(结构体模拟链表,结构体的赋值是深拷贝)

    1032 Sharing (25 分)   To store English words, one method is to use linked lists and store a word let ...

随机推荐

  1. js中浅谈this对象(未补充完整)

    什么是this? 1.javascript语言中,一切皆为对象(除了 undefined 和 null 之外),运行环境也是对象,所以函数都是在某个对象之中运行,this就是这个对象(环境). 2.t ...

  2. 数组中重复的数字(js实现)

    题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的 ...

  3. undefined,null,var 0 = {},var s = '',的区别

    undefined:不清楚变量的类型:var m; null:知道该变量是对象的引用,但是地址为空 var o = {};这是一个对象,有指向地址,但是值为空 var 0 = '';这是一个空的字符串

  4. java环境搭建与安装开发工具全教程

    当前端的后台搭档是做java后台时,这时就需要自己搭建一个java开发环境,和安装eclipse了. 那么,一般这些开发环境在一个开发团队中是统一的.正规完善的公司还会有自己软件库和安装配置文档.这时 ...

  5. springCloud的使用03-----服务消费者(feign)

    1 创建springboot项目,引入jar依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...

  6. RabbitMq--3--案例

      https://blog.csdn.net/hellozpc/article/details/81436980

  7. ThinkPhp学习

    页面跳转     界面跳转是很常用的操作,所以基于ubuntu16系统,这周学习了ThinkPHP页面跳转和重定向.   页面跳转 系统的Think\Controller类内置了两个页面跳转方法err ...

  8. shell使用lftp同步yum仓库

  9. https://segmentfault.com/a/1190000009892006?utm_source=tuicool&utm_medium=referral

    https://segmentfault.com/a/1190000009892006?utm_source=tuicool&utm_medium=referral

  10. mysql查询表的创建时间

    mysql查询表的创建时间 查询语句: SELECT table_name,create_time FROM information_schema.TABLES;