zoukankan      html  css  js  c++  java
  • UVA 10766 Organising the Organisation

    https://vjudge.net/problem/UVA-10766

    题意:

    n个员工,除总经理外每个人只能有一个直接上级

    有m对人不能成为直接的上下级关系

    规定k为总经理

    问员工分级方案

    无向图生成树的个数与根无关

    所以直接用矩阵树定理即可

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long LL;
    int n,C[51][51];
    bool can[51][51];
    int main()
    {
        int n,m,k,u,v;
        LL t,ans;
        while(scanf("%d%d%d",&n,&m,&k)!=EOF)
        {
            memset(C,0,sizeof(C));
            memset(can,false,sizeof(can));
            while(m--)
            {
                scanf("%d%d",&u,&v);
                can[u][v]=can[v][u]=true;
            }
            for(int i=1;i<n;i++)
                for(int j=i+1;j<=n;j++)
                    if(!can[i][j]) 
                    {
                        C[i-1][j-1]=C[j-1][i-1]=-1;
                        C[i-1][i-1]++;
                        C[j-1][j-1]++;
                    }
            ans=1;
            for(int i=1;i<n;i++)
            {
                for(int j=i+1;j<n;j++)
                    while(C[j][i])
                    {
                        t=C[i][i]/C[j][i];
                        for(int k=i;k<n;k++) C[i][k]-=C[j][k]*t;
                        for(int k=i;k<n;k++) swap(C[i][k],C[j][k]);
                        ans=-ans;
                    }
                ans*=C[i][i];
                if(!ans) break;
            }
            if(ans<0) ans=-ans;
            printf("%lld
    ",ans);    
        }
    }
  • 相关阅读:
    Oracle,第六周
    JAVA创建对象的几种方式
    深拷贝和浅拷贝
    Facade
    Adapter
    低谷过去了
    Oracle,第五周
    Command
    Singleton
    mybatis自动生成mapping和实体
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/7418326.html
Copyright © 2011-2022 走看看