PAT甲级——A1141 PATRankingofInstitution【25】
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:
8 10
5 6
7 8
6 4
3 6
4 5
2 3
8 2
2 7
5 3
3 4
6
4 5 4 3 6
3 2 8 7
2 2 3
1 1
3 4 3 6
3 3 2 1
Sample Output:
Yes
Yes
Yes
Yes
Not Maximal
Not a Clique
- Solution:
题意是,在给出的连通图中,判断查询的点是不是两两相连?如果是,那就是Clique,然后在判断这些查询点是是不是最大的集,即没有其他的点与查询的点是两两相连的
若存在,则不是最大集
- #include <iostream>
- #include <vector>
- using namespace std;
- int main()
- {
- int n, m, k;
- cin >> n >> m;
- vector<vector<int>>v(n + , vector<int>(n + , ));
- while (m--)
- {
- int a, b;
- cin >> a >> b;
- v[a][b] = v[b][a] = ;
- }
- cin >> k;
- while (k--)
- {
- cin >> m;
- vector<int>temp(m);
- vector<bool>otherNum(n + , true);
- for (int i = ; i < m; ++i)
- {
- cin >> temp[i];
- otherNum[temp[i]] = false;
- }
- bool flag = true, isMax = true;
- for (int i = ; i < m && flag; ++i)//判断查询的点是不是两两相连
- for (int j = i + ; j < m; ++j)
- if (v[temp[i]][temp[j]] == )
- flag = false;
- if (flag == false)
- cout << "Not a Clique" << endl;
- else
- {
- for (int i = ; i <= n && isMax; ++i)//判断查询之外的点与查询中的点是不是两两相连
- {
- if (otherNum[i] == false)continue;//在查询中的点不用判断
- int nums = ;
- for (int j = ; j < m; ++j)
- if (v[i][temp[j]] == )
- ++nums;
- if (nums == m)
- isMax = false;
- }
- if (isMax)
- cout << "Yes" << endl;
- else
- cout << "Not Maximal" << endl;
- }
- }
- return ;
- }
PAT甲级——A1141 PATRankingofInstitution【25】的更多相关文章
- PAT甲级——A1141 PATRankingofInstitution
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
- 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 ...
- 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 ...
- pat 甲级 1010. Radix (25)
1010. Radix (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of ...
- pat 甲级 1078. Hashing (25)
1078. Hashing (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task of t ...
- PAT 甲级 1003. Emergency (25)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- PAT 甲级 1078 Hashing (25 分)(简单,平方二次探测)
1078 Hashing (25 分) The task of this problem is simple: insert a sequence of distinct positive int ...
- PAT 甲级 1070 Mooncake (25 分)(结构体排序,贪心,简单)
1070 Mooncake (25 分) Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autum ...
- PAT 甲级 1032 Sharing (25 分)(结构体模拟链表,结构体的赋值是深拷贝)
1032 Sharing (25 分) To store English words, one method is to use linked lists and store a word let ...
随机推荐
- js中浅谈this对象(未补充完整)
什么是this? 1.javascript语言中,一切皆为对象(除了 undefined 和 null 之外),运行环境也是对象,所以函数都是在某个对象之中运行,this就是这个对象(环境). 2.t ...
- 数组中重复的数字(js实现)
题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的 ...
- undefined,null,var 0 = {},var s = '',的区别
undefined:不清楚变量的类型:var m; null:知道该变量是对象的引用,但是地址为空 var o = {};这是一个对象,有指向地址,但是值为空 var 0 = '';这是一个空的字符串
- java环境搭建与安装开发工具全教程
当前端的后台搭档是做java后台时,这时就需要自己搭建一个java开发环境,和安装eclipse了. 那么,一般这些开发环境在一个开发团队中是统一的.正规完善的公司还会有自己软件库和安装配置文档.这时 ...
- springCloud的使用03-----服务消费者(feign)
1 创建springboot项目,引入jar依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...
- RabbitMq--3--案例
https://blog.csdn.net/hellozpc/article/details/81436980
- ThinkPhp学习
页面跳转 界面跳转是很常用的操作,所以基于ubuntu16系统,这周学习了ThinkPHP页面跳转和重定向. 页面跳转 系统的Think\Controller类内置了两个页面跳转方法err ...
- shell使用lftp同步yum仓库
- https://segmentfault.com/a/1190000009892006?utm_source=tuicool&utm_medium=referral
https://segmentfault.com/a/1190000009892006?utm_source=tuicool&utm_medium=referral
- mysql查询表的创建时间
mysql查询表的创建时间 查询语句: SELECT table_name,create_time FROM information_schema.TABLES;