【PAT】1122. Hamiltonian Cycle

来源:互联网 发布:淘宝上买处方药流程 编辑:程序博客网 时间:2024/05/01 01:46

考查点:图

#define LOCAL#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#define FOR(i, x, y) for(int i = x; i <= y; i++)#define rFOR(i, x, y) for(int i = x; i >= y; i--)#define MAXN 210#define oo 0x3f3f3f3fusing namespace std;int G[MAXN][MAXN];int v[MAXN];int vis[MAXN];int main(){     #ifdef LOCAL        freopen("data.in","r",stdin);        freopen("data.out","w",stdout);    #endif // LOCAL    int n,m;    int u,vv;    scanf("%d%d",&n,&m);    FOR(i,0,m-1)    {        scanf("%d%d",&u,&vv);        G[u][vv]=G[vv][u]=1;    }    int k;    scanf("%d",&k);    while(k--)    {        memset(vis,0,sizeof(vis));        int cnt;        scanf("%d",&cnt);        FOR(i,0,cnt-1)        {            scanf("%d",&v[i]);            vis[v[i]]++;        }        if(cnt!=n+1)printf("NO\n");        else if(v[0]!=v[cnt-1])printf("NO\n");        else{            int i;            for(i=1;i<=cnt-2;i++)            {                if(vis[v[i]]!=1){                    printf("NO\n");                    break;                }            }            if(i==cnt-1){                int j;                for(j=0;j<=cnt-2;j++)                {                    if(G[v[j]][v[j+1]]==0){                        printf("NO\n");                        break;                    }                }                if(j==cnt-1){                    printf("YES\n");                }            }        }    }    return 0;}


0 0
原创粉丝点击