poj 1300 欧拉图

Posted zzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj 1300 欧拉图相关的知识,希望对你有一定的参考价值。

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 欧拉图的主要内容,如果未能解决你的问题,请参考以下文章

ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)

[欧拉回路] poj 1300 Door Man

POJ 1300 Door Man(欧拉通路)

POJ 1300 Door Man(欧拉通路)

欧拉图目录

欧拉图目录