zoukankan      html  css  js  c++  java
  • Havel定理

    将顶点进行排序,去掉度m最大的点,依次让其后m个数减1,若后面的某个顶点出现负数的情况或后面的数的个数少于最大的度

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    
    struct EDGE
    {
        int d;//储存度数
        int num;//储存位置
    }edge[15];
    
    bool cmp(EDGE x,EDGE y)
    {
        return x.d>y.d;
    }
    
    int main()
    {
        int T,n,i,j;
        int d[15][15];
        scanf("%d",&T);
        while(T--)
        {
            int flag=1;
            memset(d,0,sizeof(d));
            scanf("%d",&n);
            for (i=0;i<n;i++)
            {
                edge[i].num=i;
                scanf("%d",&edge[i].d);
            }
            sort(edge,edge+n+1,cmp);//这个很重要,若度数大于后面剩余的数的时候多家进去的那个就其做作用两人
            while (edge[0].d && edge[n-1].d>=0)//  排序后若某个点的度数为负数就不用判断后的了
            {  
                int i = 1;  
                while (edge[0].d--)  
                {  
                    --edge[i].d;  
                    d[edge[0].num][edge[i].num] = 1;  
                    d[edge[i].num][edge[0].num] = 1;  
                    ++i;  
                }  
                ++edge[0].d;  
                sort(edge,edge+n,cmp);  
            }  
            
            if(edge[n-1].d<0) 
            {
                printf("NO\n\n");
                continue;
            }
            printf("YES\n");
            for (i=0;i<n;i++)
            {
                for (j=0;j<n;j++)
                {
                    if(j) printf(" %d",d[i][j]);
                    else printf("%d",d[i][j]);
                }
                printf("\n");
            }
            printf("\n");
        }
        return 0;
    }
  • 相关阅读:
    Numpy 里线性代数函数
    lateral view 使用方法
    Numpy 基础函数
    Numpy 基础操作
    pandas 基础操作记录学习
    pandas向左移动非空单元格
    供应商自动记账
    SAP Smartforms 参数配置
    SAP FPM 相关包 APB_FPM_CORE
    SAP BPC 清除CUBE 中的数据
  • 原文地址:https://www.cnblogs.com/zsboy/p/2591390.html
Copyright © 2011-2022 走看看