HDU3926 Hand in Hand, 图形同构判断

图形比较特殊, 每个点的度最大是2, 故图形由链(list)和圆(circle), 其中度为0的点归为链.

由此, 我们可以对每个点进行DFS, 判断这个点所在图形是链还是圆.

然后就可以根据两个图的链的数目是否相等, 链的节点是否相等; 圆的数目是否相等, 圆的节点是否相等.


/*******************************************************************************
 # Author : Neo Fung
 # Email : [email protected]
 # Last modified: 2012-02-05 21:14
 # Filename: HDU3926 Hand in Hand.cpp
 # Description : 
 ******************************************************************************/
#ifdef _MSC_VER
#define DEBUG
#endif

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define MAX 10010
using namespace std;

bool inline cmp(const vector &lhs,const vector &rhs)
{
  return lhs.size()  adj[MAX],list[MAX],cirle[MAX];
  bool used[MAX];
  bool visit[MAX];
  int n,lcnt,ccnt;

  void init(const int &t)
  {
    n=t;
    lcnt=ccnt=0;
    memset(visit,false,sizeof(visit));
    memset(used,false,sizeof(used));
    for (int i=0;i *lhs,const int &lcnt,const vector *rhs,const int &rcnt)
{
  if(lcnt!=rcnt)
    return false;
  for(int i=0;i


你可能感兴趣的:(HDU,图论)