1. 程式人生 > >A類-L2-025. 分而治之

A類-L2-025. 分而治之

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