PAT A1134 Vertex Cover ——悲欢离合总无情,一任阶前、点滴到天明

阅读: 评论:0

PAT A1134 Vertex Cover ——悲欢离合总无情,一任阶前、点滴到天明

PAT A1134 Vertex Cover ——悲欢离合总无情,一任阶前、点滴到天明

PAT A1134 Vertex Cover

  • 判断所给集合中的点有没有cover到所有的边。在存储图的二维数组中,每个一维数组可以看作与某个顶点相关的所有边,所以当一个顶点出现时,就表示能cover到她的一维数组中的所有边
  • so二维数组存储输入的图(边),再搞一个顶点的hash数组,之后开始判断,对于每个输入的集合,在hash数组中标记其中的点——每标记一个点就相当于划掉了二维数组中此顶点对应的一维数组,标记完看一下那些没被标记的顶点,遍历其一维数组,看与之相邻的顶点是否被标记了,如果没有,就发现了一条没cover到的边,输出No;如果全部遍历过后都没有No,那就Yes
  • 注意判断每个集合前重置hash数组
#include<iostream>
#include<vector>using namespace std;vector<bool> shot;
vector<vector<int> > vv;int main(){int N,M;scanf("%d %d",&N,&M);vv.resize(N);size(N,false);for(int i = 0;i < M;i ++){int a,b;scanf("%d %d",&a,&b);vv[a].push_back(b);vv[b].push_back(a);}int K;scanf("%d",&K);for(int i = 0;i < K;i ++){int num;scanf("%d",&num);for(int j = 0;j < shot.size();j ++) shot[j] = false;for(int j = 0;j < num;j ++){int tmp;scanf("%d",&tmp);shot[tmp] = true;}bool flag = false;for(int j = 0;j < vv.size();j ++){if(shot[j]) continue;for(int k = 0;k < vv[j].size();k ++){if(!shot[vv[j][k]]){printf("Non");flag = true;break;}}if(flag) break;}if(!flag) printf("Yesn");}return 0;
}

本文发布于:2024-01-28 15:43:53,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064278348488.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:悲欢离合   一任   点滴   无情   PAT
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23