关闭

poj3660

100人阅读 评论(0) 收藏 举报
分类:

题意:

第一行:给出n头奶牛,然后给出m个关系(A   B  代表A 大于 B的分数)

第二行:m行数据

问你能够确定几个牛的位置  就是他们的排名

思路:其实就是一个点I能够通过点K找到J,那么I就可以找到J。一个点除了自身 都能找到其他点或者是被其他点找到  那么它的关系便可以确定。

#include <iostream>

#include <cstdio>

#include <algorithm>

#include <cstring>


using namespace std;


int n,m;

int map[150][5000 ];

void floyd()

{

    for(int k = 1; k <= n; k ++)

       for(int i = 1 ; i <= n; i ++)

        for(int j = 1; j <= n; j ++)

       {

           if(map[i][k]&&map[k][j])

            map[i][j] = 1;

       }

}

int main()

{

    int ans = 0;

    int u,v;

    scanf("%d%d",&n,&m);

    memset(map,0,sizeof(map));

    for(int j = 1; j <= m; j ++)

       {

           scanf("%d%d",&u,&v);

           map[u][v] = 1;

       }


    floyd();

    for(int i = 1; i <= n; i ++)

    {

        int num = 0;

        for(int j = 1; j <= n; j ++)

        {

            if(map[i][j] || map[j][i])

                num ++;

        }

        if(num == n - 1)

            ans ++;

    }

    printf("%d\n",ans);

    return 0;

}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6300次
    • 积分:541
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章分类