九度1027(判断欧拉回路)
2015-01-23 19:40
190 查看
题目链接:http://ac.jobdu.com/problem.php?pid=1027
解题思路:
想多了····还看了Fleury算法·····又想用并查集、dfs判断连通性·······后来发现不用这么麻烦。
无向图欧拉回路的判断:每个顶点的度数都是偶数,就存在欧拉回路。
暴力O(n^2)
完整代码:
解题思路:
想多了····还看了Fleury算法·····又想用并查集、dfs判断连通性·······后来发现不用这么麻烦。
无向图欧拉回路的判断:每个顶点的度数都是偶数,就存在欧拉回路。
暴力O(n^2)
完整代码:
#include <functional> #include <algorithm> #include <iostream> #include <fstream> #include <sstream> #include <iomanip> #include <numeric> #include <cstring> #include <climits> #include <cassert> #include <complex> #include <cstdio> #include <string> #include <vector> #include <bitset> #include <queue> #include <stack> #include <cmath> #include <ctime> #include <list> #include <set> #include <map> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") typedef long long LL; typedef double DB; typedef unsigned uint; typedef unsigned long long uLL; /** Constant List .. **/ const int MOD = int(1e9)+7; const int INF = 0x3f3f3f3f; const LL INFF = 0x3f3f3f3f3f3f3f3fLL; const DB EPS = 1e-9; const DB OO = 1e20; const DB PI = acos(-1.0); //M_PI; /**BigNumber..**/ const int ten[4] = {1 , 10 , 100 , 1000}; const int maxl = 1000; struct BigNumber{ int d[maxl]; BigNumber(string s){ int len = s.size(); d[0] = (len - 1) / 4 + 1; int i , j , k; for(i = 1 ; i < maxl ; i ++) d[i] = 0; for(i = len - 1 ; i >= 0 ; i --){ j = (len - i - 1) / 4 + 1; k = (len - i - 1) % 4; d[j] += ten[k] * (s[i] - '0'); } while(d[0] > 1 && d[d[0]] == 0) --d[0]; } BigNumber(){ *this = BigNumber(string("0")); } string toString(){ string s(""); int i , j , temp; for(i = 3 ; i >= 1 ; i --){ if(d[d[0]] >= ten[i]) break; } temp = d[d[0]]; for(j = i ; j >= 0 ; j --){ s = s + (char)(temp / ten[j] + '0'); temp %= ten[j]; } for(i = d[0] - 1 ; i > 0 ; i --){ temp = d[i]; for(j = 3 ; j >= 0 ; j --){ s = s + (char)(temp / ten[j] + '0'); temp %= ten[j]; } } return s; } }zero("0") , d , temp , midl[15]; BigNumber operator + (const BigNumber &a , const BigNumber &b){ BigNumber c; c.d[0] = max(a.d[0] , b.d[0]); int i , x = 0; for(i = 1 ; i <= c.d[0] ; i ++){ x = a.d[i] + b.d[i] + x; c.d[i] = x % 10000; x /= 10000; } while(x != 0){ c.d[++c.d[0]] = x % 10000; x /= 10000; } return c; } BigNumber operator - (const BigNumber &a , const BigNumber &b){ BigNumber c; c.d[0] = a.d[0]; int i , x = 0; for(i = 1 ; i <= c.d[0] ; i ++){ x = 10000 + a.d[i] - b.d[i] + x; c.d[i] = x % 10000; x = x / 10000 - 1; } while((c.d[0] > 1) && (c.d[c.d[0]] == 0)) -- c.d[0]; return c; } int n , m; const int maxn = 1001; int g[maxn][maxn]; int main() { #ifdef DoubleQ freopen("in.txt","r",stdin); #endif std::ios::sync_with_stdio(false); std::cin.tie(0); while(cin >> n) { if(n == 0) break; cin >> m; int a , b; for(int i = 1 ; i <= m ; i ++) { cin >> a >> b; g[a][b] = 1; g[b][a] = 1; } int flag = 0; for(int i = 1 ; i <= n ; i ++) { int sum = 0; for(int j = 1 ; j <= n ; j ++) sum += g[i][j]; if(sum % 2 != 0) { flag = 1; break; } } if(flag == 0) cout << "1" << endl; else cout << "0" << endl; memset(g , 0 , sizeof(g)); } }
相关文章推荐
- 九度题目1027:欧拉回路
- 九度OJ 1027:欧拉回路 (欧拉回路)
- 九度OJ 1027:欧拉回路 (欧拉回路)
- 九度1027 - 数学 - 欧拉回路
- 九度 题目1027:欧拉回路
- 九度OJ-题目1027 欧拉回路
- 九度1027:欧拉回路
- 九度:题目1027:欧拉回路
- 九度[1027]-欧拉回路
- HDOJ-1878欧拉回路 && 九度OJ-1027欧拉回路
- 九度 题目1027:欧拉回路
- 【九度OJ】1027【欧拉回路】【C实现】【浙大2008】
- 九度oj 1048 判断三角形类型
- 1027.欧拉回路
- 九度王道考研机试 2009-2哈工大1048:判断三角形类型
- 欧拉回路和欧拉路径的判断
- hrbust 哈理工oj 1633 word!word!【欧拉路、欧拉回路的有向图判断】
- hdu1116 Play on Words 判断能否构成欧拉回路
- 杭电1878 欧拉回路 (欧拉回路的判断)
- zzuli OJ 1027: 判断水仙花数