zoukankan      html  css  js  c++  java
  • bzoj1612 Usaco08 Jan 牛大赛

    水题模拟

    建一个图,每两个牛进行比赛就连一条边,然后两遍dfs求出比他弱和比他强的牛,最后如果相加数量等于n,说明他能与全部的牛进行比较,排名确定。

    #include<bits/stdc++.h>
    using namespace std;
    int mp1[110][110],mp2[110][110];
    int n,m,ans;
    int f1[110],f2[110];
    bool vis[110];
    void dfs1(int x){
        f1[x]++;vis[x]=1;
        for(int i=1;i<=n;i++){
            if(!mp1[x][i]||vis[i])continue;
            dfs1(i);
        }
    }
    void dfs2(int x){
        f2[x]++;vis[x]=1;
        for(int i=1;i<=n;i++){
            if(!mp2[x][i]||vis[i])continue;
            dfs2(i);
        }
    }
    int main(){
        scanf("%d%d",&n,&m);
        int u,v;
        for(int i=1;i<=m;i++){
            scanf("%d%d",&u,&v);
            mp1[u][v]=1;mp2[v][u]=1;
        }
        for(int i=1;i<=n;i++){
            dfs1(i);
            memset(vis,0,sizeof vis);
        }
        for(int i=1;i<=n;i++){
            dfs2(i);
            memset(vis,0,sizeof vis);
        }
        for(int i=1;i<=n;i++)if(f1[i]+f2[i]-1==n)ans++;
        printf("%d",ans);
        return 0;
    } 
  • 相关阅读:
    mysql--主从复制
    Linux--部署Vue项目
    Linux--安装node.js
    Linux--防火墙和vim
    go.js
    服务端和客户端通信的三种方式
    mysql-排序过程
    数据分析-Numpy
    shell
    Linux-crontab
  • 原文地址:https://www.cnblogs.com/Elfish/p/7608587.html
Copyright © 2011-2022 走看看