zoukankan      html  css  js  c++  java
  • PAT(Advanced Level)A1134. Vertex Cover

    题意

    vertex cover要满足的是——图中的每一条边至少依附于点集中的一个点。判断给出的点集是否为vertex cover

    思路

    • 对点集枚举所有的边,只要找到一条边不满足,我们就可以提前退出,判断这个点集不是vertex cover

    代码

    #include <iostream>
    #include <algorithm>
    #include <unordered_map>
    #include <vector>
    #include <cmath>
    using namespace std;
    struct edge {
        int u, v;
    };
    int main() {
        int N, M, K, nv;
        scanf("%d %d", &N, &M);
        int u, v;
        vector<edge> edge_table;    // 边表
        for(int i = 0; i < M; i++) {
            scanf("%d %d", &u, &v);
            edge_table.emplace_back(edge{u, v});
        }
        scanf("%d", &K);
        int t;
        while(K--) {
            scanf("%d", &nv);
            unordered_map<int, int> mp;
            for(int i = 0; i < nv; i++) {
                scanf("%d", &t);
                mp[t] = 1;
            }
            bool qualified = true;
            for(auto e: edge_table) {
                // 找到一条边,没有一个点在点集里就判定不合格
                if(mp[e.u] == 0 && mp[e.v] == 0) {
                    qualified = false;
                    break;
                }
            }
            if(qualified)
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
    
    如有转载,请注明出处QAQ
  • 相关阅读:
    TCP发送窗口更新tcp_ack_update_window
    关于nginx
    通过导出表找导出函数
    导出表
    静态链接库、动态链接库
    数据目录
    扩大节、合并节
    新增一个节
    用程序在代码节空白处加代码
    节空白处添加代码
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14525980.html
Copyright © 2011-2022 走看看