UVA 10596

来源:互联网 发布:linux 重启服务 编辑:程序博客网 时间:2024/05/22 05:32

题目大意:判断是否可以一条路走回原点,不考虑孤立点。

解题思路:判断无向图的欧拉回路,dfs判断连通,有度数的则要有被连通标记过,因为有度数的不是孤立点,存在被标记的度数则要求为偶数。

ac代码:

#include <iostream>#include <cstring>using namespace std;int map[205][205], du[205], t1, t2, vis[205], n, m, jud;void dfs(int u){vis[u] = 1;for (int i=0; i<n; i++)if (!vis[i] && map[u][i])dfs(i);}int main(){while (scanf("%d%d", &n, &m)!=EOF){memset(map, 0, sizeof(map));memset(du, 0, sizeof(du));memset(vis, 0, sizeof(vis));jud = 1;for (int i=0; i<m; i++){scanf("%d%d", &t1, &t2);map[t1][t2] = map[t2][t1] = 1;du[t1]++, du[t2]++;}for (int i=0; i<n; i++)if (du[i]){dfs(i);break;}for (int i=0; i<n; i++)if (du[i] && !vis[i] || du[i] % 2)jud = 0;if (jud && m)printf("Possible\n");elseprintf("Not Possible\n");}return 0;}