zoukankan      html  css  js  c++  java
  • luogu p2149 [USACO08JAN]牛大赛Cow Contest

    原题链接:https://www.luogu.org/problem/show?pid=2419

    这个题看一眼数据范围,100,嗯。。。。。。n^3做法,想了想会的算法,Floyd(太弱不会别的算法)。

    luogu的题解,很多人直接写了考虑边权的Floyd,而这道题,我们只需要考虑两点之间能否到达就可以了,也就是说e其实可以开成bool数组。

    与Floyd一样,枚举中间点与两个点,如果i能到达k,k能到达j,那么i也能到达j。

    然后遍历e数组,检查各点能到达的点的数目,如果为n-1(自己不算),那么该点就能确定了。

    非边权的写法优点:无需预处理填充无限大值,无需考虑大小问题。但是只适用于只考虑能否到达的问题。

    #include<cstdio>
    int e[105][105],s[105],n,m,x,y,ans;
    int main()
    {
        scanf("%d %d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d %d",&x,&y);
            e[x][y]=1;
        }
        for(int k=1;k<=n;k++)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    if(e[i][k]&&e[k][j]) e[i][j]=1;
                }
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if (e[i][j])
                {
                    s[i]++;
                    s[j]++;
                }
            }
        }
        for(int i=1;i<=n;i++) if(s[i]==n-1) ans++;
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    读取数据变JSON传值!
    YII2.0多条件查询升级版
    JS跳转页面方法
    yii的简单片段缓存
    我读过的最好的epoll讲解--转自”知乎“
    I/O多路复用详解
    ”open-close"prinple (OCP)
    获取本机的IPv4或者v6地址
    .Net 下未捕获异常的处理
    TCP断开连接的过程
  • 原文地址:https://www.cnblogs.com/zeroform/p/7552830.html
Copyright © 2011-2022 走看看