概述
哈密顿通路: 通过图中每个点且只通过一次,并且经过每一顶点的通路。
哈密顿回路: 通过图中每个点且只通过一次,并且经过每一顶点的回路。
这题没什么意思吧。。。。这题可是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分)(哈密顿回路)代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复