POJ

来源:互联网 发布:《大数据时代》电子书 编辑:程序博客网 时间:2024/06/05 14:36

题目大意:给出 n 头牛的强弱关系,问有几头牛能够确定排名
解题思路:为每个关系建立一条边,间接有关的用 floyd 建好,然后统计与剩余 n-1 个点都相连的点的个数

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>#include<cmath>#include<string.h>#include<string>#include<queue>#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))const int INF = 0x3f3f3f3f;const int NINF = -INF -1;const int MAXN = 100+5;using namespace std;int n, m;int map[MAXN][MAXN];int main() {    while (scanf("%d%d", &n, &m) != EOF) {        memset(map, 0, sizeof(map));        for (int i = 0; i < m; i++) {            int a, b;            scanf("%d%d", &a, &b);            map[a][b] = 1;        }        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 ans = 0;        for (int i = 1; i <= n; i++) {            int tmp = 0;            for (int j = 1; j <= n; j++)                if (map[i][j] || map[j][i])                    tmp++;            if (tmp == n-1)                ans++;        }        printf("%d\n", ans);    }    return 0;}
原创粉丝点击