[PAT] 1142 Maximal Clique(25 分)
1142 Maximal Clique(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
题意:
clique是一个无向图的点的子集,clique里每两个不同的点都是相连的。最大clique是不能扩展更多相连点的clique。
判断给定的点的子集是否为一个最大的clique。
思路:
将输入存在一个二维数组(矩阵)内,对于每一个查询,先判断是否为clique(每两个点对应的二维数组为1),再判断是否为max clique(遍历给定点之外的点是否和给定的点都有连线)。
题解:
#include<cstdlib>
#include<cstdio>
#include<vector>
using namespace std;
][];
int main() {
int nv, ne, m;
scanf("%d %d", &nv, &ne);
; i < ne; i++) {
int a, b;
scanf("%d %d", &a, &b);
vertex[a][b] = vertex[b][a] = ;
}
scanf("%d", &m);
; i < m; i++) {
int k;
scanf("%d", &k);
vector<);
vector<int> verts;
; j < k; j++) {
int t;
scanf("%d", &t);
verts.push_back(t);
v[t] = true;
}
//判断是否为clique
//只要给定查询中的每两个点对应矩阵上的值为0,说明它不是clique
bool isClique = true;
; j < verts.size(); j++) {
; r < verts.size(); r++) {
) {
printf("Not a Clique\n");
isClique = false;
break;
}
}
if (!isClique) break;
}
if (!isClique) continue;
//如果是clique,
//并且还存在给定之外的点与给定的所有点对应矩阵的值为1
//说明其不是max clique
bool notMaximal = false;
; j <= nv; j++) {
if (v[j] == true) continue;
bool isMaxClique = false;
; r < verts.size(); r++) {
) {
isMaxClique = true;
break;
}
}
if (!isMaxClique) {
printf("Not Maximal\n");
notMaximal = true;
break;
}
}
if (!notMaximal) printf("Yes\n");
}
;
}
[PAT] 1142 Maximal Clique(25 分)的更多相关文章
- PAT 1142 Maximal Clique[难]
1142 Maximal Clique (25 分) A clique is a subset of vertices of an undirected graph such that every t ...
- PAT 1142 Maximal Clique
A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...
- 1142. Maximal Clique (25)
A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...
- PTA PAT排名汇总(25 分)
PAT排名汇总(25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科 ...
- PAT A1142 Maximal Clique (25 分)——图
A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...
- PAT 甲级 1142 Maximal Clique
https://pintia.cn/problem-sets/994805342720868352/problems/994805343979159552 A clique is a subset o ...
- 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 ...
随机推荐
- BZOJ3523 [Poi2014]Bricks 【贪心】
题目链接 BZOJ3523 题解 简单的贪心题 优先与上一个不一样且数量最多的,如果有多个相同,则优先选择非结尾颜色 比较显然,但不知怎么证 #include<algorithm> #in ...
- Hadoop Yarn-入门篇
参考并推荐博文:https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ 重构根本的思想是将 JobTracker 两个主 ...
- poco入门
源码按照poco.然后看README,进行安装. ./configure make make install #include "Poco/ActiveMethod.h" #inc ...
- 2018 BAT最新《前端必考面试题》
2018 BAT最新<前端必考面试题> 1.Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1). 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文 ...
- defer与async的区别
当浏览器碰到 script 脚本的时候: <script src="script.js"></script> 没有 defer 或 async,浏览器会立即 ...
- JavaScript知识之判断字符串中出现最多的字符及次数
var str = 'asdddasdfdseeeeeweeeeeeeeeeeee'; var json = {}; // 定义json一个对象 for(var i = 0; i < str.l ...
- Installing JDK7 on Ubuntu
1. # sudo add-apt-repository ppa:webupd8team/java 2. # sudo apt-get update 3. # sudo apt-get insta ...
- async和await关键词用于定义原生的协程
#python为了将语义变得更加明确,就引入了async和await关键词用于定义原生的协程 # async def downloader(url): # return "xxxx" ...
- Robot Framework 常用关键字使用方法
1. Select From Listid=sourceConnoracle_source 从下拉框选取值. 2. Select Radio button name value 选择单选框.也可以点 ...
- 【CodeForces】601 D. Acyclic Organic Compounds
[题目]D. Acyclic Organic Compounds [题意]给定一棵带点权树,每个点有一个字符,定义一个结点的字符串数为往下延伸能得到的不重复字符串数,求min(点权+字符串数),n&l ...