POJ 3660 Cow contests Floyd 传递闭包

来源:互联网 发布:个体工商户开淘宝 编辑:程序博客网 时间:2024/06/05 11:59

题目分析:给出一些关系,例如A>B表示A比B强,问能确定几头牛的名次。

题目分析:
名次确定,指的是A牛比X头牛弱m,比N-X-1头牛强时,才是可以确定名次。

所以用floyd,传递闭包。

代码如下

 

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define N 106using namespace std;int v[N][N];int n,m,a,b;int main(){scanf("%d %d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&a,&b);v[a][b]=1;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)  for(int j=1;j<=n;j++)   if(v[i][k]&&v[k][j])   v[i][j]=1;int ans=0,tem;for(int i=1;i<=n;i++){tem=0;for(int j=1;j<=n;j++){if(i==j)continue;tem+=v[i][j]+v[j][i];}if(tem==n-1)ans++;} printf("%d\n",ans);//while(1);return 0;}

0 0
原创粉丝点击