博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1659 Frogs' Neighborhood
阅读量:7047 次
发布时间:2019-06-28

本文共 1641 字,大约阅读时间需要 5 分钟。

  题目大意:判断一个序列是否可图化。Havel-Hakimi定理的简单应用。

  在看的关于时提到这道题,就做了一下。可悲的是,因为一些小细节问题WA了两次,无语...

1 #include 
2 #include
3 #include
4 using namespace std; 5 #define MAXN 12 6 7 struct Vertex 8 { 9 int d, id;10 bool operator < (const Vertex& v) const11 {12 return d > v.d;13 }14 };15 Vertex vertex[MAXN];16 int G[MAXN][MAXN], n;17 18 bool Havel_Hakimi()19 {20 for (int i = 0; i < n-1; i++)21 {22 sort(vertex+i, vertex+n);23 if (i + vertex[i].d >= n) return false;24 int x = vertex[i].id;25 for (int j = i+1; j <= i+vertex[i].d; j++)26 {27 vertex[j].d--;28 int y = vertex[j].id;29 G[x][y] = G[y][x] = 1;30 if (vertex[j].d < 0) return false;31 }32 }33 if (vertex[n-1].d) return false;34 return true;35 }36 37 int main()38 {39 #ifdef LOCAL40 freopen("in", "r", stdin);41 #endif42 int T;43 scanf("%d", &T);44 while (T--)45 {46 scanf("%d", &n);47 for (int i = 0; i < n; i++)48 {49 scanf("%d", &vertex[i].d);50 vertex[i].id = i;51 }52 memset(G, 0, sizeof(G));53 if (Havel_Hakimi()) 54 {55 printf("YES\n");56 for (int i = 0; i < n; i++)57 for (int j = 0; j < n; j++)58 printf("%d%s", G[i][j], (j == n-1) ? "\n" : " ");59 }60 else printf("NO\n");61 if (T) printf("\n");62 }63 return 0;64 }
View Code

 

转载于:https://www.cnblogs.com/xiaobaibuhei/p/3268583.html

你可能感兴趣的文章
csv表格处理(上)-- JS 与 PHP 协作导入导出
查看>>
web前端开发之div+css教程精华收集一
查看>>
select * from (select user())a 为什么是查询user()的意思?
查看>>
Android SDK无法更新问题解决
查看>>
LeetCode – Refresh – N-Queens II
查看>>
LeetCode 639: DecodeWaysII
查看>>
Linux系统简介--LInix系统随笔(一)
查看>>
TCP接入层的负载均衡、高可用、扩展性架构
查看>>
使用Kieker(AspectJ)监控控制台程序
查看>>
C#多线程之旅(1)——介绍和基本概念
查看>>
Spring常用注解汇总
查看>>
10大最重要的Web安全风险之六--A6-安全误配置
查看>>
Hibernate【与Spring整合】
查看>>
NOIP2018 游记
查看>>
Redis 和 Memcached 的区别
查看>>
关于tcp状态及一些延展
查看>>
JS入门
查看>>
.vimrc
查看>>
内容显示在HTML页面底端的一些处理方式
查看>>
字符编码总结
查看>>