UVA10596

来源:互联网 发布:网站建设推广优化 编辑:程序博客网 时间:2024/06/04 23:19

题目的意思就是给出一共有几个点,然后下面是一些路(连接两点),问有没有欧拉回路。(注意有孤立点,一开始没有排除孤立点WA了);


AC代码:

#include<iostream>using namespace std;const int  N = 200 + 5;int m, n;int vis[N];int g[N][N];int num[N];int count;int count2;bool ok;void init() {for (int i = 0 ; i < N ; i++) {for (int j = 0 ; j < N ; j++) {g[i][j] = 0;}vis[i] = 0;num[i] = 0;}count = 0;count2 = 0;ok = true;}void linked (int u) {vis[u] = true;count++;for (int i = 0 ; i < m; i++) {if(g[u][i] && !vis[i]) {linked(i);}}return ;}/*void dfs(int u) {for (int i = 0 ; i < m ;i++) {if (g[u][i]) {g[u][i]--;g[i][u]--;dfs(i);}}return;}*/int main () {int op,ed;while (cin >> m >> n) {init();for (int i = 0; i < n ;i ++) {cin >> op >> ed;g[op][ed]++;g[ed][op]++;num[op]++;num[ed]++;}int k;for (int i = 0 ;i < m; i++) {if (num[i]) {k = i;break;}}for (int i = 0; i < m ; i++) {if(num[i])count2++;if (num[i] % 2 != 0) {ok = false;break;}}linked(k);if (count != count2)ok = false;if(ok)cout << "Possible"<<endl;elsecout << "Not Possible"<<endl;}return 0;}


0 0
原创粉丝点击