OpenJudge 1975 Median Weight Bead
来源:互联网 发布:郑州做seo的工资 编辑:程序博客网 时间:2024/05/16 05:03
描述
There are N beads which of the same shape and size, but with different weights. N is an odd number and the beads are labeled as 1, 2, …, N. Your task is to find the bead whose weight is median (the ((N+1)/2)th among all beads). The following comparison has been performed on some pairs of beads:
A scale is given to compare the weights of beads. We can determine which one is heavier than the other between two beads. As the result, we now know that some beads are heavier than others. We are going to remove some beads which cannot have the medium weight.
For example, the following results show which bead is heavier after M comparisons where M=4 and N=5.
1. Bead 2 is heavier than Bead 1.
2. Bead 4 is heavier than Bead 3.
3. Bead 5 is heavier than Bead 1.
4. Bead 4 is heavier than Bead 2.
From the above results, though we cannot determine exactly which is the median bead, we know that Bead 1 and Bead 4 can never have the median weight: Beads 2, 4, 5 are heavier than Bead 1, and Beads 1, 2, 3 are lighter than Bead 4. Therefore, we can remove these two beads.
Write a program to count the number of beads which cannot have the median weight.
输入
The first line of the input file contains a single integer t (1 <= t <= 11), the number of test cases, followed by the input data for each test case. The input for each test case will be as follows:
The first line of input data contains an integer N (1 <= N <= 99) denoting the number of beads, and M denoting the number of pairs of beads compared. In each of the next M lines, two numbers are given where the first bead is heavier than the second bead.
输出
There should be one line per test case. Print the number of beads which can never have the medium weight.
样例输入
1
5 4
2 1
4 3
5 1
4 2
样例输出
2
来源
Tehran Sharif 2004 Preliminary
写出来一道纯英文的题目就显得很有逼格..
二维数组a[i][j]=1表示i比j重,=0则表示不知道i和j哪个重
用Floyed传递闭包来求出i和j哪个重
然后枚举数组中的元素,a[i][j]==1 的话i的出度++、j的入度++
最后度大于等于(n+1)/2的都肯定不会是中间重量的
Ac代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int MAXN=100+5;bool a[MAXN][MAXN];int main(){ int T; scanf("%d",&T); while(T--) { int m,n; scanf("%d%d",&n,&m); int cmp=(n+1)/2; for(int i=1;i<=n;i++) //初始化 for(int j=1;j<=n;j++) a[i][j]=0;//用memset也可以 for(int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); a[u][v]=1; //emm..u比v重 } for(int k=1;k<=n;k++) //Floyed传递闭包 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=(a[i][j]||(a[i][k]&&a[k][j])); int ans=0,in[MAXN],out[MAXN]; memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(a[i][j]&&i!=j) out[i]++,in[j]++; } for(int i=1;i<=n;i++) if(in[i]>=cmp||out[i]>=cmp) ans++; printf("%d\n",ans); //不要忘记换行 } return 0;}
- OpenJudge 1975 Median Weight Bead
- 1975(Median Weight Bead)
- poj 1975 Median Weight Bead
- poj 1975 Median Weight Bead
- poj 1975 Median Weight Bead
- POJ 1975:Median Weight Bead
- zoj 2500 || poj 1975 Median Weight Bead
- poj 1975 Median Weight Bead floyd算法
- POJ-1975 Median Weight Bead(Floyed)
- POJ 1975 Median Weight Bead 笔记
- POJ1975 Median Weight Bead
- POJ1975 Median Weight Bead [Floyd]
- ZOJ 2500 Median Weight Bead
- POJ1975:Median Weight Bead(FLOYD)
- poj 1975 Median Weight Bead 传递闭包的应用
- POJ 1975 Median Weight Bead(Floyd传递闭包)
- poj 1975 Median Weight Bead(传递闭包 Floyd)
- poj1975 Median Weight Bead(floyd || 暴搜)
- 【Scikit-Learn 中文文档】朴素贝叶斯
- KMP算法详解
- ProbabilityGenerator
- 蓝桥杯题目 输入一个正整数n,输出n!的值。
- atoi
- OpenJudge 1975 Median Weight Bead
- 欢迎使用CSDN-markdown编辑器
- 软件工程导论第十二章
- asp.net如何定时执行任务
- 初学者---Android 沉浸式(透明)状态栏适配
- 【Scikit-Learn 中文文档】决策树
- 设计模式之原型模式
- 算法作业系列10——Unique Substrings in Wraparound String
- Linux USB U盘热插拔挂载和卸载