L2-025 分而治之
这是一道简单题,写着篇博客主要是给自己提个醒,做题要学会变通
这道题我一直在考虑如何对点进行操作,结果超时,但实际上这题对边进行遍历一遍就好了
#include<bits/stdc++.h>
using namespace std;
vector<int>v[10010];
int a[10010],b[10010];
int vis[10010],flag=0;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int t1,t2;
cin>>t1>>t2;
a[i]=t1;
b[i]=t2;
}
int k;
cin>>k;
for(int i=1;i<=k;i++)
{
fill(vis,vis+10010,0);
int t;
cin>>t;
for(int j=1;j<=t;j++)
{
int t1;
cin>>t1;
vis[t1]=1;
}
flag=0;
for(int j=1;j<=m;j++)
{
if(vis[a[j]]==0&&vis[b[j]]==0)
{
flag=1;
break;
}
}
if(flag==0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}