6Luffy6

导航

一笔画

描述

判断哥尼斯堡的七座桥是否能用一笔画出?如果能画出,输出Yes;如果不能画出,输出No。

输入顶点数n及道路数m;后面是m条路径的起点和终点。

输入

输入顶点数n及道路数m;后面是m条路径的起点和终点。

输出

判断如果可以不走回头路,则输出Yes,否则输出No

样例输入

4 7
1 2
1 3
1 4
2 3
2 4
3 1
4 1

样例输出

No

思路

此题为欧拉有向图,并且要考虑到欧拉回路和欧拉通路(对欧拉回路和欧拉通路不了解的可以上网查一下)
简单解释一下(欧拉有向图):
欧拉回路:度数(入度数+出度数)为奇数的为0个,且入度等于出度,起点和终点是同一个顶点
欧拉通路:度数(入度数+出度数)为奇数的为2个,

code

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
	int n,m;
	while(cin >> n >> m){
		vector<int> degree(n+1);
		while(m--){
			int a,b;
			cin >> a >> b;
			degree[a] ++;
			degree[b] ++; 
		}
		int res = 0;//统计度数为1的点 
		for(int i = 1;i <= n; i++){
			if(degree[i]&1)
				res++;
		}
		if(res <= 2) cout << "Yes" << endl;
		else cout << "No" << endl;
	} 
	return 0;
}

posted on 2024-05-12 20:55  极客三刀流  阅读(47)  评论(0)    收藏  举报