当前位置: 首页 > news >正文

【PTA Advanced】1142 Maximal Clique(C++)

目录

题目

Input Specification:

Output Specification:

Sample Input:

Sample Output:

思路

代码


题目

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

思路

难度评级:⭐️

代码

#include <iostream>
#include <vector>
#include <set>using namespace std;int matrix[201][201]={0};// 邻接矩阵 int main(int argc, char** argv) {int nv,ne;cin>>nv>>ne;for(int i=0;i<ne;i++) {int a,b;cin>>a>>b;matrix[a][b]=matrix[b][a]=1;}int m;cin>>m;for(int i=0;i<m;i++) {int k;cin>>k;// 输入clique set<int> cliqueSet;vector<int> cliqueVec;for(int j=0;j<k;j++) {int v;cin>>v;cliqueVec.push_back(v);cliqueSet.insert(v);}// 判断clique内的每个顶点之间是否相邻bool isClique=true; for(int j=0;j<k-1;j++) {for(int m=j+1;m<k;m++) {if(matrix[cliqueVec[j]][cliqueVec[m]]==0) {isClique=false;break;	}}if(!isClique) break;} if(!isClique) {cout<<"Not a Clique"<<endl;continue;}// 判断是否还可以添加另外的顶点bool isMax=true;for(int j=1;j<=nv;j++) {if(cliqueSet.count(j)==0) {int m;for(m=0;m<k;m++) {if(matrix[j][cliqueVec[m]]==0) break;}if(m>=k) {isMax=false;break;}}} if(!isMax) cout<<"Not Maximal"<<endl;else cout<<"Yes"<<endl;} return 0;
}

http://www.lryc.cn/news/13673.html

相关文章:

  • 1. MySQL在金融互联网行业的企业级安装部署
  • 【C++修炼之路】19.AVL树
  • 项目管理工具dhtmlxGantt甘特图入门教程(十):服务器端数据集成(下)
  • LeetCode 793. 阶乘函数后 K 个零
  • maven打包顺序与jvm类加载顺序
  • ④ 链表
  • 小孩扁桃体肿大3度能自愈吗?6岁小孩扁桃体肥大怎么治效果好?
  • 【C++提高编程】C++全栈体系(二十二)
  • linux系统编程2--网络编程socket知识
  • Python-__repr__、__hash__和__eq__方法,split()、join()、yield()和append()函数
  • 【安卓开发】安卓广播机制
  • 移动WEB开发四、rem布局
  • request.getURL()和request.getURI() 以及通过request获得路径相关大全
  • java网络编程-nio学习:阻塞和非阻塞
  • JVM-JMM内存模型(happens-before、volatile)
  • 算法leetcode|37. 解数独(rust重拳出击)
  • SpringBoot整合Dubbo
  • [软件工程导论(第六版)]第9章 面向对象方法学引论(课后习题详解)
  • 光学分辨率光声显微镜中基于深度学习的运动校正算法
  • 浅谈UG二次开发中使用的FindObject
  • 贪心原理及刷题
  • 2023赏金计划:Coremail SRC漏洞征集与样本奖励火热进行中
  • 简记:清理指定后缀名文件的 powerhsell 小脚本
  • 问题记录:mac系统偏好设置不展示mysql
  • 网络计划--时间参数的计算和优化
  • 1.2.7存储结构-磁盘管理:磁盘移臂调度算法、先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描算法(SCAN)、循环扫描(CSCAN)
  • 2022年AI顶级论文 —生成模型之年(上)
  • Linux下程序调试的方法【GDB】GDB相关命令和基础操作(命令收藏)
  • 使用frp配置内网机器访问
  • 简述7个流行的强化学习算法及代码实现!