zoukankan      html  css  js  c++  java
  • bzoj1612 / P2419 [USACO08JAN]牛大赛Cow Contest(Floyd)

    P2419 [USACO08JAN]牛大赛Cow Contest

    Floyd不仅可以算最短路,还可以处理点之间的关系。

    跑一遍Floyd,处理出每个点之间是否有直接或间接的关系。

    如果某个点和其他$n-1$个点都有关系,那么它的排名就是可确定的。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define re register
     5 using namespace std;
     6 int n,m,d[302][302],ans;
     7 int main(){
     8     scanf("%d%d",&n,&m); int q1,q2;
     9     for(re int i=1;i<=m;++i) scanf("%d%d",&q1,&q2),d[q1][q2]=1;
    10     for(re int k=1;k<=n;++k)
    11         for(re int j=1;j<=n;++j)
    12             for(re int i=1;i<=n;++i)
    13                 d[i][j]|=d[i][k]&d[k][j];//(i,k),(k,j)都要有关系,(i,j)才有关系
    14     for(re int i=1;i<=n;++i){
    15         int tmp=1;
    16         for(re int j=1;j<=n;++j)
    17             if(i!=j) tmp&=d[i][j]|d[j][i];//是否与其他n-1个点都有关系
    18         ans+=tmp;
    19     }printf("%d",ans);
    20     return 0;
    21 }
    View Code
  • 相关阅读:
    ConcurrentHashMap源码阅读
    java中Scanner类nextLine()和next()的区别和使用方法
    setuid
    lsattr
    设置umask
    touch
    od
    vi 搜索
    nl
    cat 参数
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/9860648.html
Copyright © 2011-2022 走看看