二分图判断模板题目 - 染色的村庄


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 4M

Author:
Problem type
Allowed languages
C, C++

🧩 二分图判断模板题目 - 染色的村庄

📝 题目描述:

在遥远的国度里,有一个由 \(n\) 个村庄组成的国家,这些村庄之间由 \(m\) 条双向道路连接。

有些村庄之间有直接的敌对关系,一旦两个敌对的村庄被分配到同一组,将会爆发冲突。

现在你要将所有村庄分成两组,使得任意一对敌对的村庄都不在同一组中。请判断是否能够做到这一点。

换句话说,给你一个无向图,判断它是否是一个 二分图

📥 输入格式:

第一行包含两个整数 \(n\) 和 \(m\) \((1 \le n \le 10^5,0 \le m \le 10^5)\),表示村庄数量和道路数量。

接下来 \(m\) 行,每行包含两个整数 \(u\) 和 \(v\) \((1 \le u, v \le n, u \neq v)\),表示村庄 \(u\) 和 \(v\) 之间有一条道路。

📤 输出格式:

  • 如果可以分组,输出:
Yes
  • 如果无法分组,输出:
No

🔍 输入样例 1:

4 4
1 2
2 3
3 4
4 1

✅ 输出样例 1:

Yes

(可以分为组1: {1,3}, 组2: {2,4})

🔍 输入样例 2:

3 3
1 2
2 3
3 1

❌ 输出样例 2:

No

(三个点成环,无法二分)


Comments

There are no comments at the moment.