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;
}
}