PAT 1142 Maximal Clique (25分)(細節題)

在這裏插入圖片描述
細節題,爲什麼PAT第三題都不涉及什麼算法啊,有點奇怪。

#include <iostream>
#include <cstdio>
#include <map>
#include <set>
#include <vector>
#define INF 0x3f3f3f3f
using namespace std;
int Nv,Ne;
int graph[210][210];
int main()
{
    scanf("%d%d",&Nv,&Ne);
    for(int i=0;i<=Nv;i++)
    {
        for(int j=0;j<=Nv;j++)
        {
            graph[i][j] = -1;
        }
    }
    while(Ne--)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        graph[x][y] = 1;
        graph[y][x] = 1;
    }
    int q;
    scanf("%d",&q);
    while(q--)
    {
        int k;
        int ar[110];
        scanf("%d",&k);
        bool flag = true;
        vector<bool> vec;
        set<int> s;
        vec.resize(Nv+1);
        for(int i=0;i<k;i++)
        {
            scanf("%d",&ar[i]);
            vec[ar[i]] = true;
            s.insert(ar[i]);
            for(int j=0;j<i;j++)
            {
                if(graph[ar[i]][ar[j]]>0)
                    continue;
                else{
                    flag = false;
                    break;
                }
            }
        }
        if(!flag)
        {
            printf("Not a Clique\n");
            continue;
        }
            
        bool maximal = true;
        for(int v=1;v<=Nv;v++)
        {
            if(!vec[v])
            {
                bool connect = true;
                for(auto u:s)
                {
                    if(graph[v][u]<0)
                    {
                        connect = false;
                        break;
                    }
                }
                if(connect)
                {
                    maximal = false;
                    break;
                }
            }
        }
        if(maximal)
            printf("Yes\n");
        else{
            printf("Not Maximal\n");
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章