欧拉图

判断欧拉图:  欧拉回路:所有点的入度等于出度.

      欧拉通路:有且仅有两个点的入度不等于出度且入度与出度只相差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          }

 

posted @ 2012-08-26 13:50  zx雄  阅读(199)  评论(0编辑  收藏  举报