码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1878 欧拉回路

时间:2014-09-03 22:30:27      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   ar   for   art   

bubuko.com,布布扣
 1 //Accepted    1240 KB    250 ms
 2 //水题 欧拉回路
 3 //连通+节点度均为偶数
 4 #include <cstdio>
 5 #include <cstring>
 6 #include <queue>
 7 #include <iostream>
 8 using namespace std;
 9 const int imax_n = 1005;
10 bool a[imax_n][imax_n];
11 bool vis[imax_n];
12 int cnt[imax_n];
13 int n,m;
14 queue<int >q;
15 
16 void bfs(int s)
17 {
18     while (!q.empty()) q.pop();
19     q.push(s);
20     vis[s]=true;
21     while (!q.empty())
22     {
23         int x=q.front();
24         q.pop();
25         for (int i=1;i<=n;i++)
26         {
27             if (!vis[i] && a[x][i]==true)
28             {
29                 vis[i]=true;
30                 q.push(i);
31             }
32         }
33     }
34 }
35 int judge()
36 {
37     memset(vis,0,sizeof(vis));
38     int ans=0;
39     for (int i=1;i<=n;i++)
40     {
41         if (!vis[i]) ans++;
42         if (ans>=2) return 0;
43         bfs(i);
44     }
45     return 1;
46 }
47 int slove()
48 {
49     //printf("judge=%d\n",judge());
50     if (judge()==0) return 0;
51     for (int i=1;i<=n;i++)
52     {
53         if (cnt[i]%2!=0) return 0;
54     }
55     return 1;
56 }
57 int main()
58 {
59     while (scanf("%d",&n),n)
60     {
61         scanf("%d",&m);
62         memset(cnt,0,sizeof(cnt));
63         memset(a,false,sizeof(a));
64         int x,y;
65         for (int i=1;i<=m;i++)
66         {
67             scanf("%d%d",&x,&y);
68             a[x][y]=a[y][x]=true;
69             cnt[x]++;
70             cnt[y]++;
71         }
72         printf("%d\n",slove());
73     }
74     return 0;
75 }
View Code

 

hdu1878 欧拉回路

标签:style   blog   http   color   os   io   ar   for   art   

原文地址:http://www.cnblogs.com/djingjing/p/3954673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!