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

猜你喜欢

转载自www.cnblogs.com/zhyyyy/p/10059342.html