Solution:

传递闭包

//if a beats b and b beats c , then a beats c

//to cow i, if all the result of content(n-1) has been known,
    //then the rank can be determined

 #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define maxn 1000 //if a beats b and b beats c , then a beats c int main()
{
long n,m,i,j,k,a,b,ans,total=;
bool vis[maxn][maxn];
scanf("%ld%ld",&n,&m);
for (i=;i<=n;i++)
for (j=;j<=n;j++)
vis[i][j]=false;
for (i=;i<=m;i++)
{
scanf("%ld%ld",&a,&b);
vis[a][b]=true;
}
for (i=;i<=n;i++)
for (j=;j<=n;j++)
for (k=;k<=n;k++)
vis[j][k]=vis[j][k] || (vis[j][i] && vis[i][k]);
//to cow i, if all the result of content(n-1) has been known,
//then the rank can be determined
for (i=;i<=n;i++)
{
ans=;
for (j=;j<=n;j++)
if (vis[i][j] || vis[j][i])
ans++;
if (ans==n-)
total++;
}
printf("%ld\n",total);
return ;
}

传递闭包标程+解释:

 #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define maxn 1000 //n个点,点编号为1~n,m条边
//传递闭包:判断图中任意两点是否可达
//时间复杂度:n*n*n int main()
{
long n,m,i,j,k,a,b;
bool vis[maxn][maxn];
scanf("%ld%ld",&n,&m);
for (i=;i<=n;i++)
for (j=;j<=n;j++)
vis[i][j]=false;
for (i=;i<=m;i++)
{
scanf("%ld%ld",&a,&b);
vis[a][b]=true;
}
//如果是无向图,a能到达b意味着b也能到达a,所以可以求a->b(a<b),i<j<k
//如果没有if:操作n*n*n
//如果有if:判断n*n+n*(n-1)*n次,操作n*(n-1)*(n-2)
//所以直接不用if
//从j点到k点:从j到k经过的点的编号小于等于i(i=1,2,…,n)。当然也可以从j直达到k。
for (i=;i<=n;i++)
for (j=;j<=n;j++)
//if (i!=j)
for (k=;k<=n;k++)
//if (i!=j && i!=k)
vis[j][k]=vis[j][k] || (vis[j][i] && vis[i][k]);
//if (vis[j][i] && vis[i][k])
//vis[j][k]=true;
for (i=;i<=n;i++)
{
printf("%ld : ",i);
for (j=;j<=n;j++)
if (vis[i][j])
printf("%ld ",j);
printf("\n");
}
return ;
}
/*
5 5
1 2
2 3
1 3
4 5
5 3
*/

其实传递闭包跟floyd很像,原理都是一样的。

poj3660(Cow Contest)解题报告的更多相关文章

  1. POJ3660——Cow Contest(Floyd+传递闭包)

    Cow Contest DescriptionN (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a prog ...

  2. POJ-3660.Cow Contest(有向图的传递闭包)

      Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17797   Accepted: 9893 De ...

  3. POJ3660:Cow Contest(Floyd传递闭包)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16941   Accepted: 9447 题目链接 ...

  4. USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】

    nocows解题报告------------------------------------------------------------------------------------------ ...

  5. POJ3660 Cow Contest —— Floyd 传递闭包

    题目链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  6. POJ-3660 Cow Contest( 最短路 )

    题目链接:http://poj.org/problem?id=3660 Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, ar ...

  7. POJ3660 Cow Contest floyd传递闭包

    Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...

  8. POJ3660 Cow Contest【最短路-floyd】

    N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we ...

  9. poj3660 Cow Contest(Floyd-Warshall方法求有向图的传递闭包)

    poj3660 题意: 有n头牛, 给你m对关系(a, b)表示牛a能打败牛b, 求在给出的这些关系下, 能确定多少牛的排名. 分析: 在这呢先说一下关系闭包: 关系闭包有三种: 自反闭包(r), 对 ...

随机推荐

  1. Nginx反向代理中使用proxy_redirect重定向url

    在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置了.proxy_redirect功能比较强大,其作用是对 ...

  2. LInux下设置账号有效时间 以及 修改用户名(同时修改用户组名和家目录)

    在linux系统中,默认创建的用户的有效期限都是永久的,但有时候,我们需要对某些用户的有效期限做个限定!比如:公司给客户开的ftp账号,用于客户下载新闻稿件的.这个账号是有时间限制的,因为是付费的.合 ...

  3. “Linux内核分析”实验报告

    Linux内核分析:实验一 潘俊洋 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...

  4. 第三个Sprint ------第八天

    四则运算APP开发基本完成! PC端运行结果截图 移动端(华为手机)测试截图 总结:通过这次课程设计,我体会到团队协作的重要性,也体会到了理论联系实际的意义.做一件事,要坚持不懈,不能半途而废!

  5. 关于HashMap和Hashtable的区别

    Hashtable的应用非常广泛,HashMap是新框架中用来代替Hashtable的类,也就是说建议使用HashMap,不要使用Hashtable.可能你觉得Hashtable很好用,为什么不用呢? ...

  6. 小学四则运算APP 第一阶段冲刺

    需求分析 1.相关系统分析员向用户初步了解需求,然后用word列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面.[1 ...

  7. 如何把数据快速批量添加到Elasticsearch中

    问题来源 最近新做一个项目,有部分搜索比较频繁的数据,而且量级比较大,预计一两年时间很可能达到100G,项目要求不要存在数据库中,最终出来有两个方案,一个是使用Protocol Buffers存储在文 ...

  8. Beta阶段敏捷冲刺三

    一.举行站立式会议 1.当天站立式会议照片一张 2.团队成员报告 林楚虹 (1) 昨天已完成的工作:从数据库读取单词 (2) 今天计划完成的工作:在数据库单词表导入完整数据,完善select.js ( ...

  9. FZU软工实践–团队成员交换交接情况

    0.前言 本次交接主要是为了之后Beta冲刺工作可以更加顺利而进行的.因为我跟其他队友交互不够方便,而且我们项目当前比较缺做前端的人员,后端功能已基本实现.所以我换出来了.希望大家可以顺顺利利做完一步 ...

  10. sql 表,字段(列),表数据(行)相关命令

    随便转载,保留出处:http://www.cnblogs.com/aaron-agu/ 注: 以下所有操作都在登陆数据库后执行 命令use test;  test为数据库名 查看表 show tabl ...