POJ 1659 Frogs’ Neighborhood
来源:互联网 发布:淘宝服装图片拍摄 编辑:程序博客网 时间:2024/06/07 00:52
POJ 1659 Frogs’ Neighborhood
图论,连通分量,想法题
传送门:HustOJ
传送门:POJ
题意
给出一个非负整数的序列,问这个序列是否是可图序列,而是否可图根据
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,可图
代码
#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <vector>#include <cmath>#include <queue>#include <stack>#include <map>#define _ ios_base::sync_with_stdio(0),cin.tie(0)#define M(a,b) memset(a,b,sizeof(a))using namespace std;const int MAXN=15;const int oo=0x3f3f3f3f;typedef __int64 LL;const LL loo=4223372036854775807ll;typedef long double LB;const LL mod=1e9+7;typedef long long LL;struct TT{ int i; int de; TT(){} TT(int _i, int _de) { i=_i;de=_de; } bool operator < (const TT& tt) const { return de>tt.de; }};TT de[MAXN];int G[MAXN][MAXN];int main(){ _; int T;cin>>T; while(T--) { M(G, 0); int n;cin>>n; bool flag=0; for(int i=1;i<=n;i++) { cin>>de[i].de; de[i].i=i; } for(int i=1;i<=n;i++) { sort(de+i, de+1+n); int cnt=de[i].de; for(int j=i+1;(--cnt)>=0;j++) { de[j].de--; if(de[j].de<0) { flag=1;goto re; } G[de[i].i][de[j].i]=1; G[de[j].i][de[i].i]=1; } de[i].de=0; } for(int i=1;i<=n;i++) { if(de[i].de>0) { flag=1; goto re; } } re: if(flag==1) cout<<"NO"<<endl; else { cout<<"YES"<<endl; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<G[i][j]<<(j==n ? '\n' : ' '); } } } cout<<endl; } return 0;}
0 0
- POJ 1659 Frogs' Neighborhood
- poj 1659 Frogs' Neighborhood
- POJ 1659 Frogs' Neighborhood
- POJ:1659Frogs' Neighborhood
- Poj 1659 Frogs' Neighborhood
- poj 1659 Frogs' Neighborhood
- poj 1659 Frogs' Neighborhood
- POJ-1659-Frogs' Neighborhood
- POJ 1659 Frogs' Neighborhood
- POJ 1659 Frogs' Neighborhood
- POJ 1659 Frogs' Neighborhood
- POJ 1659 Frogs' Neighborhood
- POJ-1659【 Frogs' Neighborhood】
- POJ-1659 Frogs' Neighborhood
- POJ 1659 Frogs' Neighborhood
- poj Frogs' Neighborhood(1659)
- poj 1659 Frogs' Neighborhood
- poj 1659 Frogs' Neighborhood
- 2017年最好的JavaScript插件
- 树的遍历(非递归实现)
- KMP算法学习
- 排序
- FFmpeg解码库裁剪和调试三--Android Studio调试FFmpeg
- POJ 1659 Frogs’ Neighborhood
- 第四届蓝桥杯大赛世纪末的星期
- AABB包围盒碰撞的理解
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
- 20170313 每月总有那么几天
- 在ubuntu下部署JAVAEE项目
- 第三课复习
- Session
- butterknifed8.5.1的简单使用说明