版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nightmare_ak/article/details/84848793
智障错误调了我一天- =,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;
}