本文主要是介绍sdnu 1088.欧拉路 (本题数据太弱),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原题链接:http://210.44.14.31/problem/show/1088
本题数据太弱,只需判断结点的度符不符合条件即可。
欧拉路:
1.最多只能有两个点的入度与出度不相等。(这两个点出度大的必须作为起始点,入度大的必须作为终点。)
2.忽略边的方向后,图必须连通。
注意事项:
1.本题最后不需要换行。
2.判断点的度时别忘了 入度与出度不能同时为0 。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
int InNodes[1000 + 5], OutNodes[1000 + 5];
int n, m;
bool oll()
{int s = 0;for (int i = 1; i <= n; i++){if (InNodes[i] == 0 && OutNodes[i] == 0) return false; //入度与出度不能同时为0if (InNodes[i] == OutNodes[i]) continue;if (InNodes[i] + 1 == OutNodes[i] || InNodes[i] == OutNodes[i] + 1) s++; //记录入度与出度不相等的点的数量else return false; //入度与出度相差2或大于的 直接falseif (s > 2) //超过2个结点的 直接falsereturn false;}return true;
}
int main()
{int u, v;cin >> n >> m;while (m--){cin >> u >> v;InNodes[v]++;OutNodes[u]++;}if (oll())cout << "YES" ;else cout << "NO" ;return 0;
}
这篇关于sdnu 1088.欧拉路 (本题数据太弱)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!