首页 > 学院 > 开发设计 > 正文

1126. Eulerian Path (25)

2019-11-06 07:28:18
字体:
来源:转载
供稿:网友

题目已经说证明了,那么按他的意思来就好了,注意判断图是否连通

#include<iostream>#include<vector>using namespace std;int N, M;int arc[505][505] = {};int degree[505] = {};int visited[505] = {};void dfs(int index){ for (int t = 1;t <= N;t++) if (!visited[t] && arc[index][t] != 0) { visited[t] = 1; dfs(t); }}int main(){ cin >> N >> M; while (M--) { int a, b; cin >> a >> b; degree[a]++;degree[b]++; arc[a][b] = arc[b][a] = 1; } int oddnum = 0; int cnt = 0; cout << degree[1]; if (degree[1] % 2) oddnum++; for (int t = 2;t <= N;t++) { cout << " " << degree[t]; if (degree[t] % 2) oddnum++; } cout << endl; for (int t = 1;t <= N;t++) if (!visited[t]) { if (++cnt == 2) break; visited[t] = 1; dfs(t); } if (cnt == 2) { cout << "Non-Eulerian" << endl; return 0; } if (oddnum == 0) cout << "Eulerian" << endl; else if (oddnum == 2) cout << "Semi-Eulerian" << endl; else cout << "Non-Eulerian" << endl;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表