zoukankan      html  css  js  c++  java
  • 1134 Vertex Cover (25 分)

    A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex of the set. Now given a graph with several vertex sets, you are supposed to tell if each of them is a vertex cover or not.

    Input Specification:

    Each input file contains one test case. For each case, the first line gives two positive integers N and M (both no more than 1), being the total numbers of vertices and the edges, respectively. Then M lines follow, each describes an edge by giving the indices (from 0 to N1) of the two ends of the edge.

    After the graph, a positive integer K (≤ 100) is given, which is the number of queries. Then K lines of queries follow, each in the format:

    Nv​​ [

    where Nv​​ is the number of vertices in the set, and ['s are the indices of the vertices.

    Output Specification:

    For each query, print in a line Yes if the set is a vertex cover, or No if not.

    Sample Input:

    10 11
    8 7
    6 8
    4 5
    8 4
    8 1
    1 2
    1 4
    9 8
    9 1
    1 0
    2 4
    5
    4 0 3 8 4
    6 6 1 7 5 4 9
    3 1 8 4
    2 2 8
    7 9 8 7 6 5 4 2
     

    Sample Output:

    No
    Yes
    Yes
    No
    No

    题意:
    图中的每条边的两个顶点a和b,判断a和b中是否至少一个在集合中,如果在,称之为顶点覆盖
    题解:
    用一个vector<int> 数组存放集合中的点,点的值为下标,所对应的数组值为1;将图中的点用结构体数组存储,遍历数组,判断时候每条边都满足顶点覆盖。


    AC代码:
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=10111;
    vector<int> v;
    struct node{
        int a,b;
    }node[maxn];
    
    int main(){
        int n,m,k,cnt,t;
        cin>>n>>m;
        for(int i=0;i<m;i++){
            cin>>node[i].a>>node[i].b;
        }
        cin>>k;
        for(int i=0;i<k;i++){
            cin>>t;
            int flag=1;
            vector<int> v;
            v.resize(n);
            for(int j=0;j<t;j++){
                cin>>cnt;
                v[cnt]=1;
            }
            for(int i=0;i<m;i++){
                int a1=node[i].a;
                int b1=node[i].b;
                if(v[a1]==0&&v[b1]==0){
                    printf("No
    ");
                    flag=0;
                    break;
                }
            }
            if(flag==1){
                printf("Yes
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    修复 Visual Studio Error “No exports were found that match the constraint”
    RabbitMQ Config
    Entity Framework Extended Library
    Navisworks API 简单二次开发 (自定义工具条)
    NavisWorks Api 简单使用与Gantt
    SQL SERVER 竖表变成横表
    SQL SERVER 多数据导入
    Devexpress GridControl.Export
    mongo DB for C#
    Devexress XPO xpPageSelector 使用
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14448998.html
Copyright © 2011-2022 走看看