概述
原文链接:我的个人博客
原题链接
1122 Hamiltonian Cycle (25分)
考点
图论
思路
该题是需要让你判断输入的那些顶点是否可以构成哈密顿环,需要满足一下条件
1. 输出的顶点总数是n+1,其中第一个顶点和最后一个顶点相同
2. 每前后两节点要相连
3. 所有节点均要出现
代码
#include <bits/stdc++.h>
using namespace std;
int e[510][510];
int main(){
int n,m,k;
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
e[a][b] = e[b][a] = 1;
}
cin>>k;
for(int i=0;i<k;i++){
int num,tmp,flag=1;
cin>>num;
vector<int>v;
v.resize(num);
for(int j=0;j<num;j++){
cin>>v[j];
}
for(int t=0;t<v.size()-1;t++){
if(e[v[t]][v[t+1]]==0){
flag = 0;
break;
}
}
if(num!=n+1 || v[0]!=v[num-1]){
cout<<"NO"<<endl;
}else{
set<int>s(v.begin(),v.end());
if(s.size()==n&&flag==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
}
最后
以上就是殷勤跳跳糖为你收集整理的PAT1122 Hamiltonian Cycle (25分)的全部内容,希望文章能够帮你解决PAT1122 Hamiltonian Cycle (25分)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复