题目链接:https://hihocoder.com/problemset/problem/1121

二分图的相关概念:https://blog.csdn.net/qq_36345036/article/details/76977294

代码实现:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
const int maxn=;
vector<int>G[maxn];//用G[maxn]来存图
int vis[maxn];
int N,M;
bool solve()
{
int flag=;
memset(vis,-,sizeof(vis));
queue<int>que;
for(int i=;i<=N;i++){
if(vis[i]!=-)//如果此点已经染过色了,则跳过
continue;
que.push(i);//找到没被染色的点,入栈
while(!que.empty()){
int top=que.front();
que.pop();
for(int j=;j<G[top].size();j++){
if(vis[G[top][j]]==-){//如果与top相邻的点还未被染色,则将它们染成相反的颜色
vis[G[top][j]]=!vis[top];
que.push(G[top][j]);//再次入栈
}
else if(vis[G[top][j]]==vis[top]){//如果与top相邻的点已经被染色,并且与top所染颜色相同则不符合条件
return false;
}
}
}
}
return true;
}
int main()
{
int T;scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++)//由题意知,i从1开始取值
{
G[i].clear();
}
for(int i=;i<=M;i++){
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);//虽是无向图,但因其是染色问题,所以要存成有向图便于判断是否有重色。
}
if(solve())
printf("Correct\n");
else
printf("Wrong\n");
}
return ;
}

最新文章

  1. JavaScript 实现5秒倒计时,接着跳转
  2. 从.NET平台调用Win32 API
  3. Flex box弹性布局 及 响应式前端设计的优化
  4. IOS第五课——Gesture and TableView
  5. iOS 图片 的 聊天气泡显示 Objective-C
  6. 今天开始应该使用 5 个JavaScript调试技巧
  7. 配置 dovecat 的 log
  8. unity NGUI点击消息不传入到场景中去
  9. 从QWidget继承的圆形进度条QRoundProgressBar,只有370行代码(别忘了有现成的QProgressDialog)
  10. Asp.net 处理程序(第五篇)
  11. Maven以及在Maven在Myeclipse中的配置
  12. NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)
  13. Android 实现串口的移植
  14. V-Charts中使用extend属性定制词云图
  15. 颜色的RGB-计算HSV公式色度/饱和度/亮度 简化代码
  16. J - FatMouse's Speed dp
  17. Oracle安装部署之RedHat安装Oracle11g_R2
  18. Day8 Servlet
  19. python循环结构
  20. 20135320赵瀚青LINUX第五章读书笔记

热门文章

  1. setTimeout设置不起作用
  2. Java SE之字符串常量池
  3. adb查看安卓设备系统Android版本
  4. Linux的capability深入分析(1)【转】
  5. DataTables 1.10.x与1.9.x参数名对照表
  6. 网络抓包 Fiddler
  7. JS 自己实现Map
  8. Python-浮动 清浮动
  9. PYTHON-匿名函数,递归与二分法,面向过程编程-练习
  10. Jmeter接口测试参数化实例图文示例