题目简化和分析:

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

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

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

相当与一个奇数边环。

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

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

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

Solution:

#include<bits/stdc++.h>

using namespace std;

int n,m;

const int N=1e6+50;

struct edge{
int to,next;
}e[N<<1];
int head[N<<1],cnt,col[N<<1];
void add_edge(int u,int v){
++cnt;
e[cnt].to=v;
e[cnt].next=head[u];
head[u]=cnt;
} void work()
{
memset(col,0,sizeof(col));
memset(head,0,sizeof(head));
cnt=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i){
int u,v;
scanf("%d%d",&u,&v);
add_edge(u,v);
add_edge(v,u);
}
bool flag=0;
queue<int>q;
int ans=0;
for(int i=1;i<=n&&!flag;++i){
if(col[i]) continue;
q.push(i);
col[i]=1;
while(!q.empty()){
int x=q.front();
q.pop();
for(int j=head[x];j;j=e[j].next){
int y=e[j].to;
if(col[y]){
if(col[y]==col[x]){
flag=1;
break;
}
}else{
col[y]=3-col[x];
q.push(y);
}
}
}
}
if(flag){
printf("Suspicious bugs found!\n");
}else{
printf("No suspicious bugs found!\n");
}
} int main()
{
int t;
scanf("%d",&t);
for(int i=1;i<=t;++i){
printf("Scenario #%d:\n",i);
work();
}
return 0;
}

SP3377的更多相关文章

  1. PKU OJ A Bug's life

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

随机推荐

  1. FFmpeg+SDL实时解码和渲染H264视频流

    前言 之前实现了Android手机摄像头数据的TCP实时传输,今天接着聊聊,如何在PC端把接收到的H264视频流实时解码并渲染出来.这次使用的语言是C++,框架有FFmpeg和SDL2. 解码 解码部 ...

  2. 打包 IPA processing failed 失败

    查看报错日志:有些SDK含有x86_64架构,移除即可 1. cd 该库SDK路径下 2.执行 lipo -remove x86_64 BaiduTraceSDK -o BaiduTraceSDK 解 ...

  3. 【Python】爬虫-Xpath

    Xpath 文章参考:https://www.cnblogs.com/mxjhaima/p/13775844.html#案例 安装 pip install lxml 引用 from lxml impo ...

  4. Variable 'xxxx' is accessed from within inner class, needs to be final or effectively final-Lambda 表达式的变量与作用域

    问题的原因 问题代码: public static void main(String[] args) { Integer sum = 0; Integer count = 0; List<Int ...

  5. 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 ...

  6. vue实现文本复制

    一. 下载插件 npm install --save vue-clipboard2 二. main.js import VueClipBoard from 'vue-clipboard2' Vue.u ...

  7. [超详细] GraalVM打包含有JNI的本地镜像

    GraalVM 是一种高性能.多语言通用虚拟机和编译器技术.它由 Oracle 开发并开源,旨在为不同的编程语言和应用场景提供统一的运行时环境和编译器平台.以下是 GraalVM 的一些主要特点和功能 ...

  8. python机器学习经典算法代码示例及思维导图(数学建模必备)

    最近几天学习了机器学习经典算法,通过此次学习入门了机器学习,并将经典算法的代码实现并记录下来,方便后续查找与使用. 这次记录主要分为两部分:第一部分是机器学习思维导图,以框架的形式描述机器学习开发流程 ...

  9. 机器学习-评价指标-AUCROC

    The Area Under the Receiver Operating Characteristic (AUC-ROC) curve is a performance metric commonl ...

  10. 《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换

    1.简介 浏览器多窗口的切换问题相比大家不会陌生吧,之前宏哥在java+selenium系列文章中就有介绍过.大致步骤就是:使用selenium进行浏览器的多个窗口切换测试,如果我们打开了多个网页,进 ...