二部图的判定·着色法

news/2024/7/15 18:42:13 标签: 图论, 算法

二部图的判定

  • 题目信息
    • 测试样例
  • 解答

题目信息

判断无向图G是否为二部图
输入:
正整数n,代表无向图G的阶数;
随后的n行代表G的邻接矩阵,每行有n个数据,每个数据以空格分隔。其中每个数据表示顶点vi邻接顶点vj边的条数。
输出:
若为树,输出yes;
否则,输出no。

测试样例

测试样例1

4
0 2 0 0
2 0 0 0
0 0 0 1
0 0 1 0
yes

测试样例2

2
1 0
0 0
no

解答

#include <iostream>
#include <queue>

using namespace std;
int N;
int map[100][100];
int color[100];

//-1,1两个颜色,0未染色
bool bfs(int s)
{
    queue<int> p;
    p.push(s);
    color[s] = 1;
    while (!p.empty())
    {
        int from = p.front();
        p.pop();
        for (int i = 0; i < N; i++)
        {
            if (map[from][i] && color[i] == 0)
            {
                p.push(i);
                color[i] = -color[from];//染成不同的颜色
            }
            if (map[from][i] && color[from] == color[i])//颜色有相同,则不是二分图
                return false;
        }
    }
    return true;
}

int main()
{
    freopen("E://test.txt", "r", stdin);
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cin >> map[i][j];
        }
    }

    for (int i = 0; i < N; i++)
    {
        if (color[i] == 0 && !bfs(i))
        {
            cout << "no" << endl;
            return 0;
        }
    }
    cout << "yes" << endl;
    return 0;
}

http://www.niftyadmin.cn/n/1342240.html

相关文章

最小生成树·kruskal

最小生成树题目信息测试样例解答题目信息 用避圈法求无向图G的最小生成树 输入&#xff1a; 正整数N M&#xff0c;N代表无向图G的阶数&#xff1b;M代表边数。 随后的M行对应M条边&#xff0c;每行给出3个正整数&#xff0c;分别是该边关联的两个顶点以及该边的权值&#xff…

python123测验选择题_Python123 部分习题

测验1: Python基本语法元素 (第1周) 数值运算 描述 获得用户输入的一个字符串&#xff0c;格式如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬…

【高并发架构】Redis特点及构件模型

数据结构 redis 相比 memcached 来说&#xff0c;拥有更多的数据结构&#xff0c;能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作&#xff0c; redis 会是不错的选择。 redis 主要有以下几种数据类型&#xff1a;string、hash、list、set、sorted set 过期策…

python3运行python2_python2与python3共存问题的解决方法

python现在主要使用的有2个版本&#xff1a;2.x和3.x&#xff0c;而这2个版本的语法却有很多的不同&#xff0c;python3.x并不是向下兼容2.x的。虽然说3.x是未来python的主流&#xff0c;但是很多工具和个人还是倾向于python2.x&#xff0c;所以有时可能同时用到这两个版本&…

XML DOM解析(Java)的一个简单实例

关于DOM解析的基础内容见上一篇文章&#xff1a;http://www.cnblogs.com/mengdd/archive/2013/06/01/3112795.html JAXP&#xff08;Java API for XML Parsing&#xff09; &#xff1a;用于XML解析的Java API。 本文通过一个实际的代码例子来说明如何用Java提供的DOM相关的类和…

有向图连通性的判定·Warshall

有向图连通性的判定题目信息测试样例解答题目信息 判断一个图是否为强连通图、单向连通图、弱连通图。输入为有向图的邻接矩阵。 输入 第一行为正整数N&#xff08;0<N<100&#xff09;&#xff0c;代表图中点的个数。 接下来N行&#xff0c;每行有N个数据&#xff0c;每…

python打开json文件_python怎么读json文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式&#xff0c;但是也使用了类似于C语言家族的习惯(包括C、C、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人…

扒一扒.NET Core的环境配置提供程序

扒一扒.NET Core的环境配置提供程序 原文:扒一扒.NET Core的环境配置提供程序很久之前&#xff0c;在玩Docker的时候顺便扒了扒&#xff0c;最近&#xff0c;终于下定决心花了些时间整理并成文&#xff0c;希望能够给大家一些帮助。 目录 .NET Core中的配置 ASP.NET Core中的…