POJ1975 Median Weight Bead [Floyd]

来源:互联网 发布:clan 软件 编辑:程序博客网 时间:2024/05/19 23:55

题意:

给定一个奇数n,和m组两数之间的关系。问可以排除多少个可以确定非中位数的数。

思路:

floyd传递闭包。一次AC。有点太水了这题。

#include<iostream>#include<algorithm>#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b?a:b)using namespace std;const int N=105;int mat[N][N];int n,m;void floyd(){for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(mat[i][k]==1&&mat[k][j]==1)mat[i][j]=1;else if(mat[i][k]==-1&&mat[k][j]==-1)mat[i][j]=-1;}}int main(){int cases;scanf("%d",&cases);while(cases--){memset(mat,0,sizeof(mat));scanf("%d%d",&n,&m);int u,v;for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);mat[u][v]=1;mat[v][u]=-1;}floyd();int ans=0;for(int i=1;i<=n;i++){int neg=0,posi=0;for(int j=1;j<=n;j++){if(mat[i][j]>0){posi++;}else if(mat[i][j]){neg++;}}if(neg>=(n+1)/2){ans++;}else if(posi>=(n+1)/2){ans++;}}printf("%d\n",ans);}return 0;}


原创粉丝点击