Havel-Hakimi定理 hdu2454 / poj1695 Havel-Hakimi定理

Havel-Hakimi定理

当年一度热门出如今ACM赛场上的算法。

算法定义:

Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的。

2。首先介绍一下度序列:若把图 G 全部顶点的度数排成一个序列 S,则称 S 为图 G 的度序列。

3。一个非负整数组成的有限序列假设是某个无向图的序列,则称该序列是可图的。

4。判定过程:(1)对当前数列排序,使其呈递减,(2)从S【2】開始对其后S【1】个数字-1,(3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。

5,举例:序列S:7,7,4,3,3,3,2,1  删除序列S的首项 7 。对其后的7项每项减1。得到:6,3,2,2,2,1,0,继续删除序列的首项6,对其后的6项每项减1,得到:2,1,1,1,0。-1,到这一步出现了负数,因此该序列是不可图的。

有2种不合理的情况:

(1)某次对剩下序列排序后。最大的度数(设为d1)超过了剩下的顶点数;

(2)对最大度数后面的d1个数各减1后,出现了负数。

两道模板题:HDU2454(纯裸题) / poj 1695(略微改一下就好了)

模板:

struct Node{
   int id,num;
   bool operator < (const Node& rhs) const {
        if(num == rhs.num)
            return id < rhs.id;
        return num > rhs.num;
   }
}node[MAXN];
int n;
int mp[MAXN][MAXN];

void solve() {
   int sum = 0;
   for(int i = 0;i < n;++i)
      sum += node[i].num;

   if(sum & 1) {
        puts("NO");
        return;
   }

   int flag = 0;
   memset(mp,0,sizeof(mp));

   for(int i = 0;i < n;++i) {
      sort(node,node + n);

      if(0 == node[0].num) {
          flag = 1;
          break;
      }

      for(int j = 0;j < node[0].num;++j) {
          if(--node[j+1].num < 0) {
             flag = 2;
             break;
          }
          mp[node[0].id][node[j+1].id] = mp[node[j+1].id][node[0].id] = 1;
      }
      node[0].num = 0;
      if(flag == 2) break;
   }

   if(flag == 1) {
       puts("YES");
       for(int i = 0;i < n;++i)
         for(int j = 0;j < n;++j)
            printf("%d%c",mp[i][j],j==n-1?'\n':' ');
   } else {
       puts("NO");
   }
}
时间: 2024-10-21 04:48:54

Havel-Hakimi定理 hdu2454 / poj1695 Havel-Hakimi定理的相关文章

Polya 定理入门[Burnside引理,Polya定理,欧拉函数]

$这篇blog重点讨论Polya的应用, 更详细的证明请百度 .$ ___ $Burnside引理$ $$L=\frac{1}{|G|}\sum_{i=1}^{|G|}D(a_i)$$ $L$: 本质不同的方案数. $G$: 置换群集合. $a_i$: 置换群中的第 $i$ 个置换. $D(a_i)$: 进行 $a_i$ 这个置换, 状态不会变化的方案 数量. 该引理与下方内容没有太大关系, 可以暂时忽略. ___ $Problem$ 链接 有 $N$ 个石子围成一圈, 使用 $M$ 种颜色染色

BZOJ-1951-古代猪文-SDOI2010-费马小定理+欧拉函数+lucas定理+中国剩余定理

描述 =>G∑(ni),i|nmodP 分析 k=∑Cin,i|n(modP) G?(P)≡1(modP),?(p)=p?1 P′=P?1 =>GP′≡1(modP) Gk≡GkmodP′(modP) 如何求k? lucas定理 (nm)=(nmodP′mmodP′)?(n/P′m/P′) P'不是素数, lucas定理不适用. 所以把P'-1拆成2*3*4679*35617再用中国剩余定理来解. 一下子用这么多不熟悉的定理和方法感觉这个题好厉害. 终于知道当被模的数不是质数该怎么用中国剩余定

[spoj104][Highways] (生成树计数+矩阵树定理+高斯消元)

In some countries building highways takes a lot of time... Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a list of cities that can be c

组合数学lucas定理 BZOJ2982 combination

2982: combination Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 597  Solved: 357[Submit][Status][Discuss] Description LMZ有n个不同的基友,他每天晚上要选m个进行[河蟹],而且要求每天晚上的选择都不一样.那么LMZ能够持续多少个这样的夜晚呢?当然,LMZ的一年有10007天,所以他想知道答案mod 10007的值.(1<=m<=n<=200,000,000) Inpu

hdu1098费马小定理

Ignatius's puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9783    Accepted Submission(s): 6839 Problem Description Ignatius is poor at math,he falls across a puzzle problem,so he has no

CAP定理与RDBMS的ACID

一.分布式领域CAP理论 CAP定理指在设计分布式系统时,一致性(Consistent).可用性(Availability).可靠性(分区容忍性Partition Tolerance)三个属性不可能同时满足,该定理也叫做布鲁尔定理.CAP定理明确了分布式系统所能实现系统的局限性,目前互联网中的很多分布式系统是基于首要满足可用性和分区容忍性而设计的. 在一系列的研究结果里发现,在较大型的分布式系统中,由于网络分隔,一致性与可用性不能同时满足,这意味着这三个要素只能同时实现两个,不可能三者兼顾:放宽

POJ - 1067 取石子游戏(包括贝蒂定理的巧妙证明)

关键词: 取石子游戏.威佐夫博奕.betty贝蒂定理.胜态.负态.状态转移.覆盖(分划).高斯函数.第二数学归纳法.黄金分割比例 题目: Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者.现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者. Input 输入包含若干行,表示若干种石

IT定理:摩尔定理,安迪-比尔定理,反摩尔定理

前两天在网上不经意间搜到了一本吴军的<浪潮之巅>,讲的是现代国际上计算机界的各大公司的兴衰沉浮,包括AT&T公司与IBM等等,把它当作IT历史书看,到现在已经看了一部分了.其中,我对计算机工业的生态链这一章很有兴趣,之中主要你讲了三个IT定理,分别是摩尔定理,安迪-比尔定理和反摩尔定理.还有一个很有意思的现象是,这些大公司基本上是在美国,而且美国的反垄断法对这些公司也是很有威胁的,目前我看到的好几家大公司的发展史上,都或多或少的被反垄断法所困扰. 摩尔定理 最早发现这个定理的是英特尔的

CSU 1805 Three Capitals(矩阵树定理+Best定理)

http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1805 题意: A和B之间有a条边,A和G之间有b条边,B和G之间有c条边.现在从A点出发走遍所有的边,然后再回到A点,问一共有多少种方法. 思路: 16年湖南省赛题目,这道题目是求欧拉回路的个数,和生成树的计数有一定的联系. 首先给出神奇的Best定理,这是什么鬼定理,反正查不到什么有关该定理的文章... $ec(G)=t_s(G)\cdot deg(s)! \cdot \prod_{v\i