【1142】Maximal Clique (25分)【有点问题】

举报
野猪佩奇996 发表于 2022/01/23 01:15:52 2022/01/23
【摘要】 #include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm> #include<map>#inclu...

  
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<string.h>
  6. #include<algorithm>
  7. #include<map>
  8. #include<vector>
  9. #include<queue>
  10. #include<unordered_map>
  11. using namespace std;
  12. const int MAXV=205;
  13. vector<vector<int>>graph(MAXV);
  14. int main(){
  15. int Nv,Ne,M;
  16. scanf("%d%d",&Nv,&Ne);//点数 边数
  17. while(Ne--){//读取无向图的边
  18. int a,b;
  19. scanf("%d%d",&a,&b);
  20. graph[b].push_back(a);
  21. graph[a].push_back(b);
  22. }
  23. scanf("%d",&M);
  24. while(M--){
  25. int K;
  26. scanf("%d",&K);
  27. unordered_map<int,int>record;
  28. //键表示读取的点集能够到达的顶点编号
  29. //值表示读取的点集有多少个点能够到达键代表的顶点
  30. vector<int>v(K);
  31. //存储读入的点集中各个顶点编号,集合有K个点
  32. for(int i=0;i<K;++i){
  33. scanf("%d",&v[i]);
  34. ++record[v[i]];//递增当前点在map中对应的值
  35. for(int ii:graph[v[i]])//遍历其能到达的顶点
  36. ++record[ii];//递增能够到达的点在map中对应的值
  37. }
  38. bool clique=true,maximal=true;
  39. for(auto i=record.cbegin();i!=record.cend()&&clique;++i){
  40. //遍历map
  41. auto j=find(v.cbegin(),v.cend(),i->first);//返回record~map以i为键值对应值的指针
  42. if(j!=v.cend()&&i->second!=K)//j未到末尾且
  43. //当前map的键代表的顶点编号在vector中且其值≠K
  44. clique=false;
  45. else if(j==v.cend()&&i->second==K)
  46. //当前map的键代表的顶点编号不在vector中且值=K
  47. maximal=false;
  48. }
  49. //输出
  50. if(!clique)
  51. printf("Not a Clique\n");
  52. else if(!maximal)
  53. printf("Not Maximal\n");
  54. else
  55. printf("Yes\n");
  56. }
  57. system("pause");
  58. return 0;
  59. }

 

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/103916179

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。