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