zoukankan      html  css  js  c++  java
  • Cow Contest POJ

    题意

    有n(1<=n<=100)个学生参加编程比赛。
    给出m条实力信息。(1<=M<=4500)
    其中每一条的格式为 A B (1<=A<=N,1<=B<=N,A!=B) 意思是A的实力比B强。
    如果A比B强且B比C强,那么A一定比C强。
    问最后有多少名学生可以确定他的排名。
    保证输入信息不存在矛盾


    题解

    n<=100!!!

    若A强于B则A向B连一条单向边
    直接强行floyed判断连通性,如果这个点能到达的点数和能到达它的点数和为n-1则说明它的排名是确定的


    常数巨大的代码

    # include <stdio.h>
    # include <stdlib.h>
    # include <iostream>
    # include <string.h>
    # define IL inline
    # define RG register
    # define mem(a, b) memset(a, b, sizeof(a))
    # define Max(a, b) (((a) > (b)) ? (a) : (b))
    # define Min(a, b) (((a) < (b)) ? (a) : (b))
    using namespace std;
    
    IL int Get(){
        RG char c = '!'; RG int x = 0, z = 1;
        for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
        for(; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0';
        return x * z;
    }
    
    const int MAXN = 101;
    int n, m, flag, ans, vis[MAXN], map[MAXN][MAXN];
    
    int main(){
        n = Get(); m = Get();
        for(RG int i = 1; i <= m; i++)
            map[Get()][Get()] = 1;
        for(RG int k = 1; k <= n; k++)
            for(RG int i = 1; i <= n; i++)
                for(RG int j = 1; j <= n; j++)
                    map[i][j] |= (map[i][k] & map[k][j]);
        for(RG int i = 1; i <= n; i++)
            for(RG int j = 1; j <= n; j++)
                vis[j] += map[i][j], vis[i] += map[i][j];
        for(RG int i = 1; i <= n; i++)
            ans += (vis[i] == n - 1);
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    MySQL Server 5.0安装教程
    c++实现一个小算法
    spring core 与 context理解
    关于eclipse的mysql连接配置
    eclipse中创建一个maven项目
    Oracle中的多表查询(笛卡尔积原理)
    Vue进阶
    计算机网络基础
    java框架之springboot
    bootstrap学习
  • 原文地址:https://www.cnblogs.com/cjoieryl/p/8206407.html
Copyright © 2011-2022 走看看