欧拉图
判断欧拉图: 欧拉回路:所有点的入度等于出度.
欧拉通路:有且仅有两个点的入度不等于出度且入度与出度只相差1.(注意:判断时相差2的不能忽略,也要进行记录)
View Code
1 int mark = 0;//记录 入度不等于出度且入度与出度相差大于1的点 2 int mark1 = 0;//记录 入度与出度 相差1的点的数量 3 int mark2 = 0; 4 int mark3 = 0;//记录 入度 == 出度 的点的数量 5 int num = 0;//记录总数 6 for(i=0;i<MAX-1;i++) 7 { 8 if(used[i]) 9 { 10 num++; 11 } 12 if (used[i] && in[i] != out[i] ) 13 { 14 if(used[i] && in[i] - out[i] == 1) 15 { 16 mark1++; 17 } 18 else if(used[i] && out[i] - in[i] == 1) 19 { 20 mark2++; 21 } 22 else 23 { 24 mark=1; 25 } 26 } 27 else if (used[i] && in[i] == out[i]) 28 { 29 mark3++; 30 } 31 } 32 if (mark) 33 { 34 cout<<"不是欧拉图"<<endl; 35 } 36 else 37 if(sum == 1 && ((mark1 == 1 && mark2 == 1) || mark3 == num) ) 38 { 39 cout<<"是欧拉图"<<endl; 40 } 41 else 42 { 43 cout<<"不是欧拉图"<<endl; 44 }