题目简化和分析:

前言:这题目背景真奇怪。

我们可以将每种关系,看成一条边,如果出现奇数边环就不满足。

例如:\(a,b\) 异性 \(a,c\) 异性 \(b,c\)异性 这种情况是不满足的。

相当与一个奇数边环。

所以我们就的考虑如何判断环,我们可以使用二分图染色

如果一条边的两个端点的颜色一致,则是奇数边环。

注意:多组数据应该清空数组啊!((我被坑了

Solution:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,m;
  4. const int N=1e6+50;
  5. struct edge{
  6. int to,next;
  7. }e[N<<1];
  8. int head[N<<1],cnt,col[N<<1];
  9. void add_edge(int u,int v){
  10. ++cnt;
  11. e[cnt].to=v;
  12. e[cnt].next=head[u];
  13. head[u]=cnt;
  14. }
  15. void work()
  16. {
  17. memset(col,0,sizeof(col));
  18. memset(head,0,sizeof(head));
  19. cnt=0;
  20. scanf("%d%d",&n,&m);
  21. for(int i=1;i<=m;++i){
  22. int u,v;
  23. scanf("%d%d",&u,&v);
  24. add_edge(u,v);
  25. add_edge(v,u);
  26. }
  27. bool flag=0;
  28. queue<int>q;
  29. int ans=0;
  30. for(int i=1;i<=n&&!flag;++i){
  31. if(col[i]) continue;
  32. q.push(i);
  33. col[i]=1;
  34. while(!q.empty()){
  35. int x=q.front();
  36. q.pop();
  37. for(int j=head[x];j;j=e[j].next){
  38. int y=e[j].to;
  39. if(col[y]){
  40. if(col[y]==col[x]){
  41. flag=1;
  42. break;
  43. }
  44. }else{
  45. col[y]=3-col[x];
  46. q.push(y);
  47. }
  48. }
  49. }
  50. }
  51. if(flag){
  52. printf("Suspicious bugs found!\n");
  53. }else{
  54. printf("No suspicious bugs found!\n");
  55. }
  56. }
  57. int main()
  58. {
  59. int t;
  60. scanf("%d",&t);
  61. for(int i=1;i<=t;++i){
  62. printf("Scenario #%d:\n",i);
  63. work();
  64. }
  65. return 0;
  66. }

SP3377的更多相关文章

  1. PKU OJ A Bug's life

    http://bailian.openjudge.cn/tm2018/G/ #include <iostream> #include <vector> #include < ...

随机推荐

  1. python接口自动化封装导出excel方法和读写excel数据

    一.首先需要思考,我们在页面导出excel,用python导出如何写入文件的 封装前需要确认python导出excel接口返回的是一个什么样的数据类型 如下:我们先看下不对返回结果做处理,直接接收数据 ...

  2. TCP/IP网络体系结构中,各层的作用,以及各层协议的作用。

    1.[TCP/IP]协议中每层的作用 从协议分层模型方面来讲,TCP/IP由四个层次组成:数据链路层(网络接口层).网络层.传输层.应用层 TCP/IP网络体系结构中,各层作用: 1.网络接口层:负责 ...

  3. 落地微服务架构v2.0

    网关+服务治理 将服务注册到Consul中,需要首先系统该插件. Ocelot:网关组件,腾讯和微软都在使用. 可以使用dotnet run命令启动.NET Core项目,启动时可以在命令时传递监听的 ...

  4. java学习中的一些总结

    最近java要考试了,在复习的时候就发现什么成员变量,成员函数,静态,非静态,里面的一些东西都乱七八糟的(其实是我太菜了,没有理解透彻) 我查了很多相关的资料,网上很多大佬总结的非常好 知识点一 成员 ...

  5. MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里

    本文将介绍如何将 MAUI 的底层替换为 WPF 框架层,且将 MAUI 的内容嵌入到 WPF 的一个控件里面,无 UI 框架嵌入的空域问题 本文是 MAUI 框架开发博客,而不是 MAUI 应用开发 ...

  6. ArrayList按指定大小分割集合

    ArrayList按指定大小分割集合 项目中使用SpringDataJpa的使用,用到了批量操作,发现框架本身有限制,长度不能超过1000,所以就百度了一下,网上都说是分段处理,也有说用OR的,但数据 ...

  7. 2021-7-8 VUE的简易表单提交

    <!DOCTYPE html> <html> <head> <title> </title> <style type="te ...

  8. go项目实现在配置文件实现配置项统一管理

    转载请注明出处: go项目中实现配置项统一管理,实现逻辑:将 配置项整理为一个json的数据结构,并保存到go.conf文件中,然后在go项目启动main方法中加载 go.conf 文件,读取go.c ...

  9. enumerate()使用方法

    enumerate()(单词意思是枚举的意思)是python中的内置函数, enumerate(X,[start=0]) 函数中的参数X可以是一个迭代器(iterator)或者是一个序列, start ...

  10. error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

    解决办法: python3 是用 VC++ 14 编译的, python27 是 VC++ 9 编译的, 安装 python3 的包需要编译的也是要 VC++ 14 以上支持的.可以下载安装这个:vi ...