L2-025 分而治之 (25分)

题目链接:分而治之

这道题跟图着色那道原理很一样。题目链接:L2-023 图着色问题 (25分)
本题核心:如果一条边其中一端点被选中就可行。若这条边的两个端点都没有在输入的方案里面,就不可行。

用一个一维数组存放m条边,pair成对存放边上的两个端点
用set存放方案的点,遍历每条边,判断是否有不可行的边

#include<iostream>
#include<vector>
#include<set>

using namespace std;

#define PII pair<int,int>

const int N = 1e4 + 10;

vector<PII> mp(N);

int n,m,k;

int main() {
    scanf("%d %d",&n,&m);
    for(int i = 0; i < m; i ++ ){
        cin >> mp[i].first >> mp[i].second;
    }
    scanf("%d",&k);
    while(k -- ){
        int cnt = 0;
        scanf("%d",&cnt);
        set<int > s;
        for(int i = 0; i < cnt; i ++ ){
            int x; scanf("%d",&x);
            s.insert(x);
        }
        bool ans = true;
        for(int i = 0; i < m; i ++ ){
            if(s.find(mp[i].first) == s.end() && s.find(mp[i].second) == s.end())
                ans = false;
        }
        if(ans) cout<<"YES\n";
        else cout<<"NO\n";
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-13 19:30
化身华黑&nbsp;今天询问对接人审批情况,结果被告知没HC了&nbsp;云计算&nbsp;
苦闷的柠檬精allin实习:主管面结束后hr每周保温一次,结果前几天和我说没hc了,我也化身华黑子了
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务