zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    Python的可变和不可变类型
    Pycharm设置语法规范快捷键方式
    python学习0305作业
    关于jQuery对象与DOM对象
    ie6下子元素撑大父元素
    Hibernate持久层ORM框架
    基于注解的事务管理
    掌握基于AOP事务管理
    Spring事务管理
    事务保存点savepoint
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/6523251.html
Copyright © 2011-2022 走看看