PAT 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 10^4 ), 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[Nv ]

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

#include<iostream> //水题
#include<vector>
using namespace std;
int main(){
  int n, m;
  cin>>n>>m;
  vector<int> edge(m, 0);
  for(int i=0; i<m; i++){
    int s, e;
    cin>>s>>e;
    edge[i]=s*10000+e;
  }
  int k;
  cin>>k;
  for(int i=0; i<k; i++){
    int nv, flag=0;
    cin>>nv;
    vector<int> visited(n+1, 0);
    for(int j=0; j<nv; j++){
      int t;
      cin>>t;
      visited[t]=1;
    }
    for(int j=0; j<m; j++){
      int s=edge[j]/10000;
      int e=edge[j]%10000;
      if(visited[s]==0&&visited[e]==0)
        flag=1;
    }
    flag==1?cout<<"No"<<endl:cout<<"Yes"<<endl;
  }
  return 0;
}

原文地址:https://www.cnblogs.com/A-Little-Nut/p/9506899.html

时间: 2024-11-05 20:43:33

PAT 1134 Vertex Cover的相关文章

1134 Vertex Cover (25 分)

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 c

1134. Vertex Cover (25)

稍微做一点点手脚就不会超时了...还是挺简单的,考试时候也做出来了... #include<iostream> #include<string> #include<queue> #include<algorithm> using namespace std; const int inf = 99999999; int main() { int v, e; cin >> v >> e; int check[10001]; vector&

二分图匹配 + 最小点覆盖 - Vertex Cover

Vertex Cover Problem's Link Mean: 给你一个无向图,让你给图中的结点染色,使得:每条边的两个顶点至少有一个顶点被染色.求最少的染色顶点数. analyse: 裸的最小点覆盖问题,二分图的最大匹配,直接套模版即可. Time complexity: O(N^2) view code

URAL 2038 Minimum Vertex Cover

2038. Minimum Vertex Cover Time limit: 1.0 secondMemory limit: 64 MB 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. A minimum vertex cover is a vertex cover with minimal

SCU - 4439 Vertex Cover (图的最小点覆盖集)

Vertex Cover frog has a graph with \(n\) vertices \(v(1), v(2), \dots, v(n)\) and \(m\) edges \((v(a_1), v(b_1)), (v(a_2), v(b_2)), \dots, (v(a_m), v(b_m))\). She would like to color some vertices so that each edge has at least one colored vertex. Fi

四川第七届 D Vertex Cover(二分图最小点覆盖,二分匹配模板)

Vertex Cover frog has a graph with nn vertices v(1),v(2),-,v(n)v(1),v(2),-,v(n) and mm edges (v(a1),v(b1)),(v(a2),v(b2)),-,(v(am),v(bm))(v(a1),v(b1)),(v(a2),v(b2)),-,(v(am),v(bm)). She would like to color some vertices so that each edge has at least

2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6150 Vertex Cover 二分图,构造

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6150 题意:"最小点覆盖集"是个NP完全问题 有一个近似算法是说-每次选取度数最大的点(如果有多个这样的点,则选择最后一个) 让你构造一个图,使得其近似算法求出来点数是你给定的覆盖点数的至少3倍. 解法: 可以把左边的点编号1~n,将左边的点进行n次分块,第i次分块中每块的大小为i,对于每一块的点,都在右边创建一个新节点与这些点相连. ①右边的点的度数为n,n-1,n-2,...,n/2,

scu oj 4439 : Vertex Cover(2015年四川省程序ACM设计竞赛D题 )

一般图的最小点覆盖问题是是一个npc问题,目前哈没有比较好的多项式的算法.但是这题有一点特殊的地方,每条边必定包含前面30个点的的一个,所以这题可以枚举钱30个点的选和不选的状态,后面的点对应的状态就唯一了.    所以这题就是  dfs+可行性减枝和答案最优减枝. #include<stdio.h> #include<string.h> #include<iostream> #include<string> #include<queue> #i

2018.3.12 np completed problem, vertex cover and traveling salesman problem

1.先是讲了np完全问题的一般概念.简单的说就是一般的计算问题分为p,np和npc问题,还有一类更难的nph问题不过目前不在讨论范围内.npc问题的特点是,所有的np问题都能reduce到npc问题.就比如说我们要解决让刁大大能够从1数到10的问题.虽然这个问题很难,但是我们可以换个思路解决,我们把它推演(reduce)一下,变成教他从1数到20的问题.那么如果我们解决了这个新问题,原来的老问题也就同时解决了.从1数到10和从1数到20,就相当于np问题和npc问题之间的关系. 那么这样的结果就