https://www.cnblogs.com/minks/p/4734485.html图论术语
#include<iostream>
#include<vector>
using namespace std;
//编写完成后再大体看一遍知道哪一块干什么事情,之后再运行样例否则出了错误 找自己在哪写的还需要时间而且还容易懵逼(注意)
int a[209][209];
int nv,ne;
int main()
{ cin>>nv>>ne;
for(int i=0;i<ne;i++)
{int ll,rr;
cin>>ll>>rr;
a[ll][rr]=a[rr][ll]=1;
//记录顶点出没出现过
}
int que;
cin>>que;
for(int i=0;i<que;i++)
{ int tempk;
cin>>tempk;
//hash一开始没放进来(注意)
int hash[209]={0};
vector<int>v;
int data;
for(int j=0;j<tempk;j++)
{cin>>data;
v.push_back(data);
hash[data]=1;}
//如同矩阵遍历先固定一个坐标
int isc=1,ismaxc=1;
for(int i=0;i<v.size();i++)
for(int j=i+1;j<v.size();j++)
{if(a[v[i]][v[j]]==0)isc=0;
//没有输入了可以加break
break;
}
if(isc==0) printf("Not a Clique\n");
if(isc==1)
{ for(int i=1;i<=nv;i++)
if(hash[i]==0) {
for(int j=0;j<v.size();j++)
{
if(a[i][v[j]]==0) break;
if(j==v.size()-1) ismaxc=0;
}
}
}
if(ismaxc==0) printf("Not Maximal\n");
//条件要逐步累加,否则有可能出现前面不成立后面成立的错误(注意)
if(isc==1&&ismaxc==1)printf("Yes\n");
}
return 0;
}
总结
1.//编写完成后再大体看一遍知道哪一块干什么事情,之后再运行样例否则出了错误 找自己在哪写的还需要时间而且还容易懵逼(注意) 先有个数哪里出错哪里找
2.基本原则 以题意为本 不要妄加猜测,题目上整么说整么来,因为他有可能整个你没见过的名词只给你说性质,你未必学过
3. 如果需要标记哪些出现过哪些没出现过需要用到没出现的那些 //记录顶点出没出现过列一个 hash标记不错,但最后访问时要知道0位置有没有用
4.//hash一开始没放进来(注意)条件重置检查一下
5. //如同矩阵遍历先固定一个坐标
6. //没有输入了可以加break
7.//条件要逐步累加,否则有可能出现前面不成立后面成立的错误(注意)尤其是使用钥匙原则时上面要上两把锁,不能少上导致不小心开了
英语:
问题
稍微了解一下图的术语 但以后看题你要先在自己什么都不知道的前提下去看问题