首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年5月31日 星期六 2:20pm

poj1659 - Frogs' Neighborhood

  • 24-03-05 07:20
  • 2514
  • 9015
blog.csdn.net

                                  想看更多的解题报告: http://iyenn.com/rec/1824570.html
                                  转载请注明出处:http://blog.csdn.net/wangjian8006

题目大意:给出一个非负整数的序列,问这个序列是否是可图序列,而是否可图根据
Havel-Hakimi定理的方法来构图

解题思路:Havel-Hakimi定理:
1,一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的。

2,判定过程:
(1)对当前数列排序,使其呈非递增序列
(2)从第二个数开始对其后d[1]个数字减1,d[1]代表排序后第1个数的值
(3)然后删除第一个之后对剩下的数继续排序
(3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。
 
3,举例:
序列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,
到这一步出现了负数,因此该序列是不可图的

  再举例:
序列:4 3 1 5 4 2 1
排序之后:5 4 4 3 2 1 1
删除5对后面5个数减1操作
3 3 2 1 0 1
排序
3 3 2 1 1 0
删除3对后面3个数减1操作
2 1 0 1 0
排序
2 1 1 0 0
删除2 对后面2个数减1操作
0 0 0 0
全为0,可图

  1. /*
  2. Memory 164K
  3. Time 0MS
  4. */
  5. #include
  6. using namespace std;
  7. typedef struct{
  8. int degree;
  9. int mark;
  10. }MAP;
  11. MAP mp[15];
  12. int g[15][15];
  13. int cmp(const void *a,const void *b){
  14. return ((MAP *)b)->degree-((MAP *)a)->degree;
  15. }
  16. int main(){
  17. int n,j;
  18. int Case,i,k;
  19. scanf("%d",&Case);
  20. while(Case--){
  21. scanf("%d",&n);
  22. memset(g,0,sizeof(g));
  23. for(i=0;i
  24. scanf("%d",&mp[i].degree); //输入点的度
  25. mp[i].mark=i;
  26. }
  27. k=0;
  28. while(k
  29. qsort(mp+k,n-k,sizeof(mp[0]),cmp); //删除第1个数排序
  30. if(mp[k].degree>n-k-1) break;
  31. for(i=1;i<=mp[k].degree;i++){ //对后面的数减1
  32. if(mp[k+i].degree<=0) break; //出现负数就退出
  33. mp[k+i].degree--;
  34. g[mp[k].mark][mp[k+i].mark]=g[mp[k+i].mark][mp[k].mark]=1; //对于k,后面d[k]个数指向k
  35. }
  36. if(i<=mp[k].degree) break;
  37. k++;
  38. }
  39. if(kprintf("NO\n");
  40. else {
  41. printf("YES\n");
  42. for(i=0;i
  43. for(j=0;j
  44. if(j) printf(" ");
  45. printf("%d",g[i][j]);
  46. }
  47. printf("\n");
  48. }
  49. }
  50. if(Case) printf("\n");
  51. }
  52. return 0;
  53. }


 

注:本文转载自blog.csdn.net的wangjian8006的文章"http://blog.csdn.net/wangjian8006/article/details/7974845"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top