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

poj 1300 欧拉图

时间:2017-09-14 18:50:08      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:getch   targe   clu   bre   using   memset   org   define   space   

http://poj.org/problem?id=1300

       要不是书上有翻译我估计要卡死,,,首先这是一个连通图,鬼知道是那句话表示出来的,终点必须是0,统计一下每个点的度数,如果是欧拉回路那么起点必须是0,因为起点等于终点。

如果是欧拉通路的话,起点必须不是0而且0的度数必须是奇数不然不满足欧拉图的定义。 还有就是输入很操蛋,用的stringstream。

   

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<vector>
 5 #include<sstream>
 6 #define maxn 1<<15
 7 using namespace std;
 8 int cnt[25];
 9 int main()
10 {
11     char s[1005];
12     int M,N,i,j,k,x;
13     while(cin>>s){
14         if(!strcmp(s,"ENDOFINPUT")) break;
15         cin>>M>>N;
16         int odd=0,doors=0;
17         memset(cnt,0,sizeof(cnt));
18         getchar();
19         for(i=0;i<N;++i)
20         {
21 
22             gets(s);
23             stringstream ss(s);
24             while(ss>>x){
25                    // cout<<"x="<<x<<endl;
26                 doors++;
27                 cnt[i]++;
28                 cnt[x]++;
29             }
30         }
31        for(i=0;i<N;++i)
32             if(cnt[i]%2==1) odd++;
33             //cout<<odd<<endl;
34         if(odd==0&&M==0){cout<<"YES "<<doors<<endl;}
35         else if(odd==2&&cnt[M]%2==1&&M!=0){cout<<"YES "<<doors<<endl;}
36         else puts("NO");
37         cin>>s;
38         //puts("endend");
39     }
40     return 0;
41 }

 

poj 1300 欧拉图

标签:getch   targe   clu   bre   using   memset   org   define   space   

原文地址:http://www.cnblogs.com/zzqc/p/7521540.html

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