圖論 pat 1142

#include <iostream>
#include<vector>
const int maxv = 205;
using namespace std;
//1142
//題設定點標號爲從1開始的注意!!!
//判斷的時候,容易漏掉//遍歷的話要從1開始
int n, m, q;
int main()
{
       //freopen("1142.txt","r",stdin);
       int G[maxv][maxv] = {0};
       cin>>n>>m;
       for(int i = 0; i < m;i++){
              int a, b;
              cin>>a>>b;
              G[a][b] = G[b][a] = 1;
       }

       cin>>q;

       while(q--){
              int vis[maxv] ={0};
              int k,temp[maxv];
              cin>>k;
              for(int i = 0; i <k; i++){
                     cin>>temp[i];
                     vis[temp[i]] = 1;
              }
              if(k==1){
                     int i;
                     for(i =1; i <= n; i++){//判斷的時候,容易漏掉//遍歷的話要從1開始
                           if(G[i][temp[0]] == 1)
                                   break;
                     }
                     if(i==n+1) printf("Yes\n");
                     else printf("Not Maximal\n");
                     continue;
              }

              int i, isMax = 1;
              for(i = 0; i < k;i++){
                     int j;
                     for( j = 0;j<k;j++){
                            if(j!=i){
                                   if(G[temp[j]][temp[i]] == 0)
                                          break;
                            }
                     }
                     if(j!=k){
                            printf("Not a Clique\n");
                            break;
                     }
              }if(i==k){
                            for(int mm = 1;mm<=n;mm++){//因爲 頂點是從1開始 到n的
                                   if(vis[mm] == 0){
                                          for(int l = 0; l < k; l++){
                                                 if(G[temp[l]][mm] ==0) break;
                                                 if(l==k-1) isMax = 0;
                                          }
                                   }
                                   if(isMax == 0){
                                          printf("Not Maximal\n");
                                          break;
                                   }
                            }
                            if(isMax == 1)
                                   printf("Yes\n");
              }
       }
    //cout << "Hello world!" << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章