1142 Maximal Clique(50行代码+超详细注释)

news/2024/12/2 14:48:13/

分数 25

全屏浏览题目

切换布局

作者 CHEN, Yue

单位 浙江大学

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

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<bits/stdc++.h>
using namespace std;
const int N=209,INF=0x3f3f3f3f;
int nv,ne;
int g[N][N];
bool st[N];
int main(){
    cin>>nv>>ne;
    for(int i=0;i<ne;i++){
        int a,b;
        cin>>a>>b;
        g[a][b]=g[b][a]=1;
    }
    int m;
    cin>>m;
    for(int i=0;i<m;i++){//m个query 
        int k;
        cin>>k;
        vector<int>v; 
        memset(st,0,sizeof st);
        while(k--){//insert序列 
            int node;
            cin>>node;
            v.push_back(node);
            st[node]=true;
        }
        int flag=1;//1表示Maximal,0表示Not a Clique
        for(int i=0;i<v.size()-1;i++)//若相邻结点没有边则flag置为0 
            for(int j=i+1;j<v.size();j++)
                if(!g[v[i]][v[j]])flag=0;
        if(flag){//若相邻结点两两有边 
            for(int i=1;i<=nv;i++){//将任意一个结点加入看看是否能成新的clique 
                if(!st[i]){//将没访问过的结点加入 
                    int cnt=0;
                    for(int j=0;j<v.size();j++){//若新加入的结点与序列有边 
                        if(g[i][v[j]])cnt++;//边数+1 
                    }
                    if(cnt==v.size()){//若都有边 
                        flag=0;//此时的flag为0表示Not Maximal 
                        break;
                    }
                }
            }
            if(flag)printf("Yes\n");//若此时flag仍为1 
            else printf("Not Maximal\n");//若此时flag为0 
        }
        else printf("Not a Clique\n");//若相邻结点不是两两有边 
    }
    return 0;
}


http://www.ppmy.cn/news/78614.html

相关文章

一分钟带你了解网络安全(如何自学)

一、关于网络安全职业 早些年&#xff0c;网络安全刚起步&#xff0c;作为一个网络安全从业人员&#xff0c;最苦恼的事情就是每当回到村里变成狗蛋儿的时候&#xff0c;七大姑八大姨&#xff0c;邻里乡亲&#xff0c;村子里的各种人都会来找你&#xff0c;狗蛋儿&#xff0c;你…

对Android 说Hello ——Qt For Android

1. Qt 安卓环境搭建 平台&#xff1a;Qt5.15.2 官网教程&#xff1a; Getting Started with Qt for Android | Qt 5.15 网上的教程&#xff1a; qt5.15.2配置android_加油吧&#xff0c;小杜的博客-CSDN博客 注意 &#xff1a;注意ndk的路径中不能有空格&#xff0c;我之前…

一、尚医通预约下单

文章目录 一、预约下单1、需求分析1.1订单表结构1.2下单分析 2、搭建service-order模块2.1 搭建service-order模块2.2 修改配置2.3 启动类2.4配置网关 3、添加订单基础类3.1 添加model3.2 添加Mapper3.3 添加service接口及实现类3.4 添加controller 4、封装Feign调用获取就诊人…

CPU和GPU前端的应用

1、CPU&#xff08;英文Central Processing Unit 中央处理器&#xff09; CPU&#xff08;中央处理器&#xff09;是一种通用的处理器&#xff0c;其主要任务是执行计算机程序中的指令和序列。它能够处理复杂的逻辑判断、分支、跳转、内存访问等操作&#xff0c;因此在执行大多…

面试:CSS清除浮动的方式

添加额外标签 <div class"parent">//添加额外标签并且添加clear属性<div style"clear:both"></div>//也可以加一个br标签 </div> 父级添加overflow属性&#xff0c;或者设置高度建立伪类选择器清除浮动 //在css中添加:after伪元素…

「 计算机网络 」TCP的粘包拆包问题

「 计算机网络 」TCP的粘包/拆包问题 参考&鸣谢 大病初愈&#xff0c;一分钟看懂TCP粘包拆包 雷小帅 TCP 的粘包拆包以及解决方案 一乐说 文章目录 「 计算机网络 」TCP的粘包/拆包问题一、前言二、为什么UDP没有粘包三、粘包拆包发生场景四、常见的解决方案五、Netty对粘包…

爬虫Requests库是什么,怎么用?

Requests库是Python中一个非常流行的HTTP请求库&#xff0c;它可以方便地发送HTTP请求并处理响应。在本文中&#xff0c;我们将介绍Requests库的基本用法&#xff0c;包括发送GET和POST请求、设置请求头、处理响应等。 一、安装Requests库 在使用Requests库之前&#xff0c;我…

C++入门篇---(命名空间、缺省参数、以及输入、输出)

前言 c 我来了,恭喜牛牛解锁新世界.开启c的学习之旅. &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:讲解C…