POJ
来源:互联网 发布:windows.h在哪 编辑:程序博客网 时间:2024/06/16 08:38
可简单图化的判定(Havel定理): 把序列排成不增序,即d1>=d2>=……>=dn,则d可简单图化当且仅当d’={d2-1,d3-1,……d(d1+1)-1, d(d1+2),d(d1+3),……dn}可简单图化. 简单的说,把d排序后,找出度最大的点(设度为d1),把它后面的d个数依次连边,然后这个点就可以不管了(然后这个数–),一直继续这个过程,直到建出完整的图,或出现负度等明显不合理的情况.
不合理的情况大概有两种: 一是中间出现负度的情况, 二是出现某个数后面的个数小于这个数.
那么直接根据这个定理就可以直接写了.
AC Code
/** @Cain*/const int maxn = 15+5;int cas=1;int a[maxn][maxn];struct node{ int id,w;}s[maxn];bool cmp(node a,node b){ return a.w>b.w;}void solve(){ int n; scanf("%d",&n); //printf("%d\n",n); Fill(a,0); for(int i=0;i<n;i++) { scanf("%d",&s[i].w); s[i].id = i ; } int flag = 1; for(int i=0;i<n && flag;i++){ sort(s+i,s+n,cmp); if(s[i].w > n-i-1) flag = 0; for(int j=i+1;j<=i+s[i].w;j++){ s[j].w--; if(s[j].w<0) flag = 0; a[s[i].id][s[j].id] = 1; a[s[j].id][s[i].id] = 1; } } if(!flag) puts("NO"); else{ puts("YES"); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%d%c",a[i][j],j==n-1?'\n':' '); } } }}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- 搭建PHP开发环境(五)-虚拟主机
- HDU 1525 Euclid's Game 找规律博弈
- 移植 Nginx+PHP(FastCGI) 到 ARM Linux (三)
- sql和debug.php 引入 解决PHP开发遇到的问题
- OPENCV特征点java提取与匹配与比较
- POJ
- 卷积神经网络——DenseNet
- Servlet(服务器端对象session)
- 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理
- tensorflow训练的模型在java中的使用
- theano DisconnectedInputError
- java多线程之死锁
- HDU 3032 Nim or not Nim? (sg函数) 注意打表方法
- 说给部分程序员听