• POJ 1659 Frogs' Neighborhood


    转载请注明出处:http://blog.csdn.net/a1dark

    分析:切图论切的第一道题、也是图论的例题、主要用到一个Havel-Hakimi 定理

    有以下两种不合理的情形:
    (1) 某次对剩下序列排序后,最大的度数(设为d1)超过了剩下的顶点数;
    (2) 对最大度数后面的d1 个度数各减1 后,出现了负数。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N 15
    struct vertex{
        int degree;//顶点的度
        int index;//顶点序号
    }v[N];
    int cmp(const void *a,const void *b){
        return ((vertex*)b)->degree-((vertex*)a)->degree;
    }
    int main(){
        int t,n,i,j,k,r,p,q,d1;
        int Edge[N][N],flag;
        scanf("%d",&t);
        while(t--){
            scanf("%d",&n);
            for(i=0;i<n;i++){
                scanf("%d",&v[i].degree);
                v[i].index=i;
            }
            memset(Edge,0,sizeof(Edge));
            flag=1;
            for(k=0;k<n&&flag;k++){
                qsort(v+k,n-k,sizeof(vertex),cmp);
                i=v[k].index;
                d1=v[k].degree;
                if(d1>n-k-1)flag=0;
                for(r=1;r<=d1&&flag;r++){
                    j=v[k+r].index;
                    if(v[k+r].degree<=0)flag=0;
                    v[k+r].degree--;
                    Edge[i][j]=Edge[j][i]=1;
                }
            }
            if(flag){
                puts("YES");
                for(p=0;p<n;p++){
                    for(q=0;q<n;q++){
                        if(q)printf(" ");
                        printf("%d",Edge[p][q]);
                    }
                    puts("");
                }
            }
            else puts("NO");
            if(t) puts("");
        }
        return 0;
    }
    


  • 相关阅读:
    MongoDB性能分析
    MongoDB复制
    redis键管理
    MySQL集群架构-DRBD+headbeat +lvs+keepalived
    Spark-Core RDD转换算子-双Value型交互
    Spark-Core RDD转换算子-Value型
    Spark-Core RDD的创建
    Spark-Core RDD概述
    数仓理论
    flume 进阶
  • 原文地址:https://www.cnblogs.com/riskyer/p/3292210.html
Copyright © 2020-2023  润新知