第一次提交居然通过了。
#include <cstdio>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
int G[210][210];
void exec(){
int N,M;cin>>N>>M;
int a,b;
for(int i=0;i<M;i++){
cin>>a>>b;
G[a][b]=1;
G[b][a]=1;
}
int K;cin>>K;
while(K--){
int n;cin>>n;
vector<int> v(n);
set<int> s;
for(int i=0;i<n;i++){
cin>>v[i];
s.insert(v[i]);
}
if(n!=N+1||v[0]!=v[n-1]||s.size()!=N)cout<<"NO"<<endl;
else{
bool flag=true;
for(int i=0;i<n-1;i++){
if(G[v[i]][v[i+1]]==0){
flag=false;
break;
}
}
if(flag){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
}
}
int main(){
freopen("data.in","r",stdin);
exec();
return 0;
}
题意:
汉密尔顿回路:包含图上每个顶点的简单路径。
给个图,判断是不是汉密尔顿回路。
符合pat出题一贯的方向,有点难的算法题不让你算,让你验证。