/ SB域 /

记录详情

Accepted


  
# 状态 耗时 内存占用
#1 Accepted 5ms 4.203 MiB
#2 Accepted 8ms 4.207 MiB
#3 Accepted 8ms 4.125 MiB
#4 Accepted 6ms 4.238 MiB
#5 Accepted 3ms 4.082 MiB
#6 Accepted 11ms 4.227 MiB
#7 Accepted 9ms 4.125 MiB
#8 Accepted 8ms 4.25 MiB
#9 Accepted 6ms 4.242 MiB
#10 Accepted 4ms 4.25 MiB

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000 + 10;
int n, m;
int a[maxn][maxn];
 
int main(){
    cin >> n >> m;
    memset(a, 0, sizeof(a)); // 初始化为0
    for(int i = 0; i < m; i++){
        int x, y;
        cin >> x >> y;
        a[x][y] = 1; //1 代表第x个比第y个重, 也可以表示第y个比第x个轻
    }
    for(int k = 1; k <= n; k++){
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                if(a[i][k] && a[k][j]) a[i][j] = 1; //如果第i个比第k个重,同时第k个比第j个重,那么就可以推出第i个比第j个重
            }
        }
    }
    int t, ans = 0;
    for(int i = 1; i <= n; i++){
        t = 0;
        //统计比第i个轻的个数,如果数量大于总个数的一半,那就不可能是中间重量,答案+1
        for(int j = 1; j <= n; j++){
            if(a[i][j]) t++;
        }
        if(t >= (n+1)/2) ans++;
        t = 0;
        //统计比第i个重的个数
        for(int j = 1; j <= n; j++){
            if(a[j][i]) t++;
        }
        if(t >= (n+1)/2) ans++;
    }
    cout << ans << "\n";
    return 0;
}
 
/**************************************************************
    Problem: 1193
    Language: C++
    Result: 正确
    Time:4 ms
    Memory:5696 kb
****************************************************************/

信息

递交者
类型
递交
题目
珍珠
题目数据
下载
语言
C++
递交时间
2018-07-14 22:36:55
评测时间
2018-07-14 22:36:55
评测机
分数
100
总耗时
73ms
峰值内存
4.25 MiB