首页 > 代码库 > poj1659Havel-hakimi 定理
poj1659Havel-hakimi 定理
#include <cstdio>#include <cstring>#include <algorithm>#include <climits>#include <string>#include <iostream>#include <map>#include <cstdlib>#include <list>#include <set>#include <queue>#include <stack>using namespace std;struct Node{ int x;int val;}node[100];int cmp(const Node &a,const Node &b){ return a.val>b.val;}int G[100][100];int main(){ int t,n; cin>>t; int cc=t; while(t--){ memset(G,0,sizeof(G)); cin>>n; for(int i=0;i<n;i++){ int c;cin>>c; node[i].x=i;node[i].val=c; } bool flag=true; for(int i=0;i<n&&flag;i++){ sort(node+i,node+n,cmp); for(int j=1;j<=node[i].val;j++){ int k=i+j; if(k>=n){ flag=false;break; } node[k].val--; if(node[k].val<0){ flag=false;break; } G[node[i].x][node[k].x]=1; G[node[k].x][node[i].x]=1; // cout<<node[i].x<<" "<<node[k].x<<endl; // system("pause"); } } if(!flag){ if(t!=cc-1) cout<<endl; cout<<"NO"<<endl; } else{ if(t!=cc-1) cout<<endl; cout<<"YES"<<endl; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(j==0) cout<<G[i][j]; else cout<<" "<<G[i][j]; } cout<<endl; } } } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。