题目描述
给定一张有 个结点、 条边的无向图,结点编号为 到 。
如果能够把所有结点划分成两个集合 与 (允许其中一个集合为空),使得图中每一条边的两个端点恰好一个在 中、另一个在 中,就称这张图是二分图。
请你判断给定的图是不是二分图。注意:图不一定连通;两个结点之间可能有多条边;但不会出现两端是同一个结点的自环边。
输入格式
第一行包含两个整数 与 (,),分别表示结点数与边数,两个整数之间用一个空格隔开。
接下来 行,每行包含两个整数 (,),表示结点 与结点 之间有一条无向边。
输出格式
输出一行一个字符串:如果给定的图是二分图,输出 Yes;否则输出 No(请注意大小写)。
样例
样例 1
输入:
4 4
1 2
2 3
3 4
4 1
输出:
Yes
解释:取 ,,四条边都连接 中的点与 中的点。
样例 2
输入:
3 3
1 2
2 3
3 1
输出:
No
解释:三角形中把 个点分成两类,必有两个相邻的点落在同一类,所以不是二分图。
样例 3
输入:
6 4
1 2
2 1
4 5
5 6
输出:
Yes
解释:结点 是孤立点;结点 之间有两条重边,它们连接同一对点,不影响二分性; 是一条链。
数据范围
| 子任务 | 数据点占比 | 限制 |
|---|---|---|
| 1 | 30% | , |
| 2 | 30% | , |
| 3 | 40% | , |
对于 的数据:,,,;图可能不连通,可能有重边,没有自环。