POJ-1659 Frogs' Neighborhood
2015-10-11 00:04
459 查看
这里是原题地址:Frogs'
Neighborhood
算法的在我的另一篇博文里讲的比较清楚了Havel–Hakimi
algorithm
这里直接贴代码,是用stl优先队列实现的,内存消耗比较大
Neighborhood
算法的在我的另一篇博文里讲的比较清楚了Havel–Hakimi
algorithm
这里直接贴代码,是用stl优先队列实现的,内存消耗比较大
/***************************************************************** > File Name: POJ1606.cpp > Author: Uncle_Sugar > Mail: uncle_sugar@qq.com > Created Time: 2015年10月10日 星期六 22时20分44秒 ****************************************************************/ # include <cstdio> # include <iostream> # include <vector> # include <cstring> # include <queue> using namespace std; const int debug = 0; const int size = 15; int g[size][size]; typedef pair<int,int> vertex; int main() { int i,j,k; int T,Case = 0; scanf("%d",&T); while (T--) { memset(g,0,sizeof(g)); if (Case++) printf("\n"); int n; scanf("%d",&n); vector<vertex> seq; for (i=0;i<n;i++) { int tmp; scanf("%d",&tmp); seq.push_back(vertex(tmp,i)); } priority_queue<vertex> pri_que; for (i=0;i<seq.size();i++) if (seq[i].first) pri_que.push(seq[i]); int flag = 1; while (!pri_que.empty()) { int degree = pri_que.top().first; int number = pri_que.top().second; pri_que.pop(); if (pri_que.size()<degree){ flag = 0;break; } vector<vertex> vct; while (degree--) { vertex tmp = pri_que.top();pri_que.pop(); tmp.first--; g[number][tmp.second] = g[tmp.second][number] = 1; vct.push_back(tmp); } for (i=0;i<vct.size();i++) if (vct[i].first) pri_que.push(vct[i]); } if (flag) { printf("YES\n"); for (i=0;i<n;i++) for (j=0;j<n;j++) printf("%d%c",g[i][j],j==n-1?'\n':' '); } else printf("NO\n"); } return 0; }
相关文章推荐
- 字符串中数字子串的求和
- opencv3中Sobel算子
- 字符串匹配之RK算法
- PHP中字符串拆分和拼接
- Linux的Tomcat设置默认项目
- RandomAccessFile总结
- 微软的野心
- 利用Aspose文档转图片
- N-Queens II
- IOS 播放音乐
- php实现微信公众号无限群发
- php实现微信公众平台账号自定义菜单类
- php实现Mysql简易操作类
- Javascript函数式编程简单介绍
- Javascript函数式编程语言
- javascript函数式编程程序员的工具集
- 5个Java9新特性你知道了吗?
- 如何在SuperMap中打开谷歌卫星地图
- Maven打包
- Maven打包字符编码