A類-L2-025. 分而治之
阿新 • • 發佈:2018-12-03
L2-025. 分而治之
題意:
題目給出N個城市M條路,然後決定攻擊Np
個相應城市,讓你判斷剩餘的城市之間不存在通路。
分析:
首先城市間通路表示可以用鄰接矩陣進行初始化,然後用map對映來標記已被攻擊的城市,最後迴圈遍歷判斷是否還有連通的兩個城市
程式碼:
#include<iostream> #include<map> using namespace std; const int maxn=10010; struct node{ int x,y; }edge[maxn]; int vis[maxn]; int main(){ int n,m; cin>>n>>m; for(int i=0;i<m;i++){ cin>>edge[i].x>>edge[i].y; } int k,t,city; cin>>k; for(int i=0;i<k;i++){ map<int,int> mp; cin>>t; for(int j=0;j<t;j++){ cin>>city; mp[city]=1; } int j=0; for(j=0;j<m;j++){ if(mp[edge[j].x]!=1&&mp[edge[j].y]!=1){ cout<<"NO"<<endl; break; } } if(j>=m){ cout<<"YES"<<endl; } } return 0; }