【PAT甲级】1134 Vertex Cover

简介: 【PAT甲级】1134 Vertex Cover

1134 Vertex Cover

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 104), 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 N−1) 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:


N v   v [ 1 ]   v [ 2 ] ⋯ v [ N v ] N_v\ v[1]\ v[2] ⋯ v[N_v]N v  v[1] v[2]⋯v[N v ]


where Nv is the number of vertices in the set, and v[i]'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

题意

如果图中的一个顶点集合能够满足图中的每一条边都至少有一个端点在该集合内,那么这个顶点集合就是图的顶点覆盖。


现在给定一张图,以及若干个顶点集合,请你判断这些顶点集合是否是图的顶点覆盖。


思路

因为这题不涉及到最短路,只需按照题意进行模拟即可。我们可以直接用一个结构体数组来存储图中的每一条边,并用一个数组 st 来记录每次查询集合的点。


然后每次查询都去遍历所有边,题目要求只要边中的两个点至少一个点在集合中就满足顶点覆盖,所以只需最后判断是否所有边都满足该要求即可。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
//用结构体存储边
struct Edge {
    int a, b;
}e[N];
bool st[N];
int n, m;
int main()
{
    cin >> n >> m;
    for (int i = 0; i < m; i++)    cin >> e[i].a >> e[i].b;
    int k;
    cin >> k;
    while (k--)  //查询是否为顶点覆盖
    {
        int num, i;
        cin >> num;
        memset(st, 0, sizeof st); //初始化
        for (i = 0; i < num; i++)
        {
            int x;
            cin >> x;
            st[x] = true; //将该点标记
        }
        for (i = 0; i < m; i++)    //遍历每条边
            if (!st[e[i].a] && !st[e[i].b])    //边的两点中的一点在集合即可
                break;
        if (i < m) puts("No");
        else    puts("Yes");
    }
    return 0;
}


目录
相关文章
|
定位技术
94Echarts - 地理坐标/地图(Use lines to draw 1 million ny streets.)
94Echarts - 地理坐标/地图(Use lines to draw 1 million ny streets.)
61 0
SVG 夜晚的灯塔案例(use、mask、clipPath ...)
SVG 夜晚的灯塔案例(use、mask、clipPath ...)
87 0
|
C++
【PAT甲级 - C++题解】1033 To Fill or Not to Fill
【PAT甲级 - C++题解】1033 To Fill or Not to Fill
78 0
|
存储 C++ 容器
【PAT甲级 - C++题解】1154 Vertex Coloring
【PAT甲级 - C++题解】1154 Vertex Coloring
61 0
2021杭电多校第八场 HDU7063-Square Card(求两圆相交面积)
2021杭电多校第八场 HDU7063-Square Card(求两圆相交面积)
82 0
2021杭电多校第八场 HDU7063-Square Card(求两圆相交面积)
|
图形学
守望先锋英雄角色模型分享,obj文件+材质贴图,3dmax游戏建模
**守望先锋角色max模型参考** 3D建模并非一朝一夕就能练好,除了设定有效的目标和勤加练习外,还有一些学习技巧和素材也是非常重要的!
478 0
守望先锋英雄角色模型分享,obj文件+材质贴图,3dmax游戏建模
LeetCode 75 Sort Colors 颜色分类(荷兰国旗)
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
103 0
2019ICPC上海K-Color Graph(二分图 状压枚举)
2019ICPC上海K-Color Graph(二分图 状压枚举)
84 0
|
数据挖掘 定位技术
Google Earth Engine——USGS/GAP/PR/2001波多黎各的详细植被和土地覆盖分类
Google Earth Engine——USGS/GAP/PR/2001波多黎各的详细植被和土地覆盖分类
155 0
Google Earth Engine——USGS/GAP/PR/2001波多黎各的详细植被和土地覆盖分类
|
算法 C#
图像滤镜艺术---Oilpaint油画滤镜
原文:图像滤镜艺术---Oilpaint油画滤镜  Oilpaint油画滤镜     图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间就像雾一样随机呈现。
1136 0