zoukankan      html  css  js  c++  java
  • 山东省赛 传递闭包

    https://vjudge.net/contest/311348#problem/A

    思路:用floyd传递闭包处理点与点之间的关系,之后开数组记录每个数字比它大的个数和小的个数,如果这个个数超过n/2那么它不可能作为中位数,其他的都有可能。

    #include<bits/stdc++.h>
    using namespace std;
    int e[105][105];
    int maxx[105];
    int minn[105];
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n,m;
            scanf("%d%d",&n,&m);
            memset(e,0,sizeof(e));
            int flag=1;
            for(int i=1; i<=m; i++)
            {
                int a,b;
                scanf("%d%d",&a,&b);
                if(a==b) flag=0;
                e[a][b]=1;
            }
            memset(maxx,0,sizeof(maxx));
            memset(minn,0,sizeof(minn));
            for(int k=1; k<=n; k++)
                for(int i=1; i<=n; i++)
                    for(int j=1; j<=n; j++)
                        e[i][j]|=e[i][k]&e[k][j];
            for(int i=1; i<=n; i++)
                for(int j=1; j<=n; j++)
                {
                    if(e[i][j]&&e[j][i]) flag=0;
                    if(e[i][j]==1)
                    {
                        maxx[j]++;
                        minn[i]++;
                    }
                }
            if(flag==0)
            {
                for(int i=1; i<=n; i++)
                    printf("0");
                if(t!=0) printf("
    ");
                continue;
            }
            for(int i=1; i<=n; i++)
            {
                if(maxx[i]>(n/2)||minn[i]>(n/2))
                    printf("0");
                else printf("1");
            }
            if(t!=0) printf("
    ");
        }
    }
  • 相关阅读:
    黑色边影,
    拉伸的代码,
    一定是selection的原因啊,要不然呢,
    status bar的差别,
    黄色,
    域名错了,
    node=day4
    PS切片
    移动端插件IScroll.js
    移动web资源概论
  • 原文地址:https://www.cnblogs.com/dongdong25800/p/11195887.html
Copyright © 2011-2022 走看看