• poj 3660Cow Contest


    题目链接:http://poj.org/problem?id=3660

    有n头奶牛还有m种关系a,b表示a牛逼b彩笔,所以a排名比b高

    最后问你给出的关系最多能确定多少头奶牛的排名,而且给出的数据不会有矛盾

    其实就是给出了一个无环的有向图,只要有一点他能跟所有点有联系那么这个点的排名就知道了。

    可以用一下floyd的思想还是能简单实现的。

    其实这题简单来说就是能走完所有点的路都经过哪些点,最容易想到的就是floyd求多源点的最短路

    然后稍微改一下就好了。

    #include <iostream>
    #include <cstring>
    #include <string>
    using namespace std;
    int n , m , a , b , mmp[110][110] , In[110] , Out[110] , counts;
    bool vis[110][110];
    void bfs() {
        memset(vis , false , sizeof(vis));
        for(int k = 1 ; k <= n ; k++) {
            for(int i = 1 ; i <= n ; i++) {
                for(int j = 1 ; j <= n ; j++) {
                    if(mmp[i][k] != 0 && mmp[k][j] != 0) {
                        if(!vis[i][j]) {
                            In[j]++;
                            Out[i]++;
                            vis[i][j] = true;
                            mmp[i][j] = 1;
                        }
                    }
                }
            }
        }
        for(int i = 1 ; i <= n ; i++) {
            //cout << i << ' ' << In[i] << ' ' << Out[i] << endl;
            if(In[i] + Out[i] == n + 1) {
                counts++;
            }
        }
    }
    int main() {
        cin >> n >> m;
        for(int i = 1 ; i <= n ; i++) {
            In[i] = 0 , Out[i] = 0;
            for(int j = 1 ; j <= n ; j++) {
                mmp[i][j] = 0;
            }
            mmp[i][i] = 1;
        }
        for(int i = 1 ; i <= m ; i++) {
            cin >> a >> b;
            mmp[a][b] = 1;
        }
        counts = 0;
        bfs();
        cout << counts << endl;
        return 0;
    }
    
  • 相关阅读:
    JAVA中字符串比较equals()和equalsIgnoreCase()的区别
    idea无法调试的解决方案.
    idea如何把快捷键改成eclipse的快捷键
    idea安装和破解教程
    在idea中maven项目 jar包下载不完整解决办法
    Spring boot入门级项目(超详细简易版)
    123123
    ww
    无限极操作
    无限极菜单1
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/6523251.html
Copyright © 2020-2023  润新知