首页 > 学院 > 开发设计 > 正文

poj 3660 Cow Contest Flyod

2019-11-06 07:56:21
字体:
来源:转载
供稿:网友

题目链接:

http://poj.org/PRoblem?id=3660

题意:

给出牛之间的强弱关系,让你确定有多少头牛能够确定其排名。

题解:

就是求出每个点的入度和出度的和,如果是n-1,就可以确定排名 floyd

代码:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 1e5+10;int g[105][105];int main(){ int n=read(), m=read(); for(int i=1; i<=m; i++){ int u,v; scanf("%d%d",&u,&v); g[u][v] = 1; } for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(g[i][k]&&g[k][j]) g[i][j] = 1; int ans = 0; for(int i=1; i<=n; i++){ int cnt = 0; for(int j=1; j<=n; j++){ if(g[i][j] || g[j][i]) cnt++; } // cout << cnt << endl; if(cnt == n-1) ans++; } printf("%d/n",ans); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表