zoukankan      html  css  js  c++  java
  • POJ 3660 Cow Contest【floyd】

    题目链接:

    http://poj.org/problem?id=3660

    题目大意:

    给出n头牛,m个关系,关系为a的战力比b高。求最后可以确定排名的牛的数量

    思路:

    1.如果一头牛跟其他所有牛都确定了一个输赢关系,那么该牛的排名就得到了确定,所以用floyd跑一遍传递闭包。然后求得每个点的出度(赢了), 入度(输了)。若该点的度之和为 n - 1 ,即确定排名。

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define mem(a, b) memset(a, b, sizeof(a))
     4 const int MAXN = 110;
     5 
     6 int n;
     7 int map[MAXN][MAXN];  //表示i赢j 
     8 int in[MAXN], out[MAXN];
     9 
    10 void floyd()
    11 {
    12     for(int k = 1; k <= n; k ++)
    13         for(int i = 1; i <= n; i ++)
    14             for(int j = 1; j <= n; j ++)
    15                 if(map[i][k] && map[k][j])
    16                     map[i][j] = 1;
    17 }
    18 
    19 int main()
    20 {
    21     int m;
    22     scanf("%d%d", &n, &m);
    23     for(int i = 1; i <= m; i ++)
    24     {
    25         int a, b;
    26         scanf("%d%d", &a, &b);
    27         map[a][b] = 1;
    28     }
    29     floyd();
    30     for(int i = 1; i <= n; i ++)
    31         for(int j = 1; j <= n; j ++)
    32             if(map[i][j])
    33             {
    34                 out[i] ++;
    35                 in[j] ++;
    36             }
    37     int ans = 0;
    38     for(int i = 1; i <= n; i ++)
    39         if(out[i] + in[i] == n - 1)
    40             ans ++;
    41     printf("%d
    ", ans);
    42     return 0;
    43 }
    View Code
  • 相关阅读:
    【原】list<T>排序
    [原]unity3d刀光剑影(二)
    [原]unity3D bug记录
    [原]重要工具集
    [原]IOS 后台发送邮件
    [转]IOS 崩溃日志大全(二)
    动态二维数组的建立
    struts 学习
    sizeof()与strlen()的区别
    struts配置。泪奔...
  • 原文地址:https://www.cnblogs.com/yuanweidao/p/11650093.html
Copyright © 2011-2022 走看看