1142 Maximal Clique

#include<vector> 
#include<iostream>
#include<map>
using namespace std;
#define MAXN 210
int main()
{
	#ifdef ONLINE_JUDGE
	#else
	freopen("in.txt","r",stdin);
	#endif
	int nv,ne;
	cin>>nv>>ne;
	int hash[MAXN][MAXN]={};
	for(int i=0;i<ne;i++){
		int a,b;
		cin>>a>>b;
		hash[a][b]=1;
		hash[b][a]=1;
	}
	int q;
	cin>>q;
	for(int i=0;i<q;i++){
		int temp,temp1;
		cin>>temp;
		vector<int> t;
		map<int,int> mp;
		for(int j=0;j<temp;j++){
			cin>>temp1;
			t.push_back(temp1);
			mp[temp1]=1;
		}
		int flag=1;
		for(int k=0;k<temp;k++){
			for(int p=k+1;p<temp;p++){
				if(hash[t[k]][t[p]]==0){
					flag=0;
					break;
				}
			}
			if(flag==0) break;
		}
		int sign=1;
		if(flag==1){
			vector<int> s;
			for(int tt=1;tt<=nv;tt++){
				if(mp[tt]==0){
					s.push_back(tt);
				}	
			}
			for(int j=0;j<s.size();j++){
				for(int k=0;k<t.size();k++){
					if(hash[s[j]][t[k]]!=1){
						break;
					}
					if(k==t.size()-1)
					sign=0;
				}
				if(sign==0){
					cout<<"Not Maximal"<<endl;
					break;
				}
			}
			if(sign==1){
				cout<<"Yes"<<endl;
			}
		}else if(flag==0) cout<<"Not a Clique"<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/csg3140100993/article/details/81359710
今日推荐