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. MySQL的启动程序

    1.mysqld:             mysql server [root@test bin]# ./mysqld --user=mysql & [root@test bin]# ps ...

  2. 《Linux内核分析》第六周笔记 进程的描述和进程的创建

    进程的描述和进程的创建 一.进程的描述 1.进程描述符task_struct数据结构(一) 操作系统的三大功能:进程管理(核心).内存管理.文件系统. 进程控制块PCB——task_struct(进程 ...

  3. Linux基础实践

    Linux基础实践 1.1 应用安装 要求:掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法 备份原地址列表文件:sudo cp /etc/apt/sou ...

  4. LINUX内核设计第五周——扒开系统调用的三层皮(下)

  5. Android中Json数据读取与创建的方法

    转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...

  6. Ajax cross domain

    xhrFields:{ withCredentials:true}, https://stackoverflow.com/questions/2054316/sending-credentials-w ...

  7. kali linux升级

    自己使用的是2017.2 版本的kali linux 想着升级一下 里面的包 比如msf 等 但是执行 msfupdate时提示 root@kali201702:~# msfupdate msfupd ...

  8. 电梯间的谈话:3分钟快速回答CEO的问题

    想象一下,你在电梯里遇见了公司的CEO,他让你用3分钟来解释聚焦答案模式这个深奥的术语到底是什么意思.你可以这么说—— 为奠定一个正确的基调,让他酝酿好情绪听你说接下来的话,你可以这样开头: “总裁, ...

  9. ionic动态切换主题皮肤

    本来想通过css自定义属性值: :root{ --red:red; } p{ color:var(--red); } div{ background:var(--red); } 在ionic2设置动态 ...

  10. Alpha、伪Beta 发布个人感想与体会

    1.Alpha版本 在Alpha版本发布时,我在Fantacy组,那时的体会我已在前面写过,现在回想起来,我觉得自己的决定似乎做的并不是很糟糕,因为来到新的团队里,我学到了很多东西,认识了很多技术很好 ...