描述
判断哥尼斯堡的七座桥是否能用一笔画出?如果能画出,输出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;
}