uva 10596

来源:互联网 发布:翻墙有哪些软件推荐 编辑:程序博客网 时间:2024/05/01 08:55

题意:其实就是是否存在一条回路,经过每一点。。如果图具有欧拉回路的话,不仅仅是度数都是偶数,还要图是连通的,而连通的判断是,任意两个点是可以互通的,所以可以用dfs去搜索

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 210;int vis[MAXN],G[MAXN][MAXN],N,M;void dfs(int v)     {vis[v] = true ;for(int i = 0 ; i < N ; i++){if(!vis[i] && G[v][i])dfs(i);}}int main(){while (scanf("%d %d",&N,&M) != EOF){memset(G,0,sizeof(G));int a,b;memset(vis,0,sizeof(vis));for ( int i = 0 ; i < M ; i++){scanf("%d %d",&a,&b);G[a][b] = G[b][a] = 1;vis[a]++;vis[b]++;}int cnt = 0;for (int i = 0 ; i < N ; i++)   //欧拉回路的判断if (vis[i] % 2 == 1 ){cnt++;break;}memset(vis,0,sizeof(vis));if (cnt || M < 2 )printf("Not Possible\n");else {dfs(0);bool flag = true;for (int i = 0 ; i < N ; i++){if(!vis[i])flag = false;}if (flag)printf("Possible\n");else printf("Not Possible\n");}}return 0;}



原创粉丝点击