我是靠谱客的博主 端庄月亮,最近开发中收集的这篇文章主要介绍PAT 1122 Hamiltonian Cycle (25分)(哈密顿回路)代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

哈密顿通路: 通过图中每个点且只通过一次,并且经过每一顶点的通路。
哈密顿回路: 通过图中每个点且只通过一次,并且经过每一顶点的回路。
这题没什么意思吧。。。。这题可是PAT的第三题(不过这套题的第四题是判断是否为AVL树,没练习过就很困难。)

代码

#include <iostream>
#include <cstdio>
#include <vector>
#define MAX 210
using namespace std;
int N,M;
int graph[MAX][MAX];
bool judge(vector<int> vec)
{
    vector<bool> exist;
    exist.resize(vec.size());
    if(vec[0]!=vec[vec.size()-1])
        return false;
    for(int i=1;i<vec.size();i++)
    {
        if(!graph[vec[i-1]][vec[i]])
        {
            return false;
        }
        if(exist[vec[i]])
            return false;
        exist[vec[i]] = true;
    }
    return true;
}
int main()
{
    scanf("%d%d",&N,&M);
    for(int i=0;i<M;i++)
    {
        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;
        scanf("%d",&k);
        vector<int> vec;
        vec.resize(k);
        for(int i=0;i<k;i++)
        {
            int x;
            scanf("%d",&vec[i]);
        }
        if(k!=N+1)
            printf("NOn");
        else{
            if(judge(vec))
                printf("YESn");
            else printf("NOn");
        }
    }
    return 0;
}

最后

以上就是端庄月亮为你收集整理的PAT 1122 Hamiltonian Cycle (25分)(哈密顿回路)代码的全部内容,希望文章能够帮你解决PAT 1122 Hamiltonian Cycle (25分)(哈密顿回路)代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部