PAT (Advanced Level) Practice 1122 Hamiltonian Cycle (25 分)
阿新 • • 發佈:2018-12-07
智障錯誤調了我一天- =,a的大小可能超過N,導致陣列越界,wa最後一個樣例。
#include<cstdio>
#include<cstring>
#include<map>
#include<vector>
using namespace std;
typedef pair<int,int> pii;
const int N=200+5;
int k,n,m;
vector<int> a;
map<int,int> vis;
map<pii,int> mp;
int check ()
{
vis.clear();
if(k!=n+1||a[0]!=a[k-1]) return 0;
vis[a[0]]=1;
for(int i=1;i<k;i++)
{
pii p=make_pair(a[i-1],a[i]);
if(!mp[p]) return 0;
if(vis[a[i]]&&i!=k-1) return 0;
vis[a[i]]=1;
}
return 1;
}
int main()
{
scanf("%d%d",& n,&m);
while(m--)
{
int u,v;
scanf("%d%d",&u,&v);
mp[make_pair(u,v)]=mp[make_pair(v,u)]=1;
}
int q;scanf("%d",&q);
while(q--)
{
scanf("%d",&k);
a.clear();
for(int i=0;i<k;i++)
{
int x;scanf ("%d",&x);
a.push_back(x);
}
if(check()) puts("YES");
else puts("NO");
}
return 0;
}