POJ-3660-Cow Contest FLOYD传递闭包

xiaoxiao2021-02-27  255

题目大意是说:给出牛之间的强弱关系,让你确定有多少头牛能够确定其排名。

用Floyd做,对每给的一个胜负关系连一条边,最后跑一次Floyd,然后判断一头牛所确定的关系是否是n-1次,若是,则这头牛的排名可以确定

#include<iostream> #include<cstdio> #include<cstring> const int maxn=100+10; using namespace std; int d[maxn][maxn],n,m; int main(){ while(scanf("%d%d",&n,&m)!=EOF){ memset(d,0,sizeof(d)); for(int i=1;i<=m;i++){ int a,b; scanf("%d%d",&a,&b); d[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(d[i][k]&&d[k][j])d[i][j]=1; int ans=0; for(int i=1;i<=n;i++){ int res=n-1; for(int j=1;j<=n;j++) if(d[i][j]||d[j][i])res--; if(!res)ans++; } printf("%d\n",ans); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-10627.html

最新回复(0)