flord(传递闭包)
来源:互联网 发布:linux 5创建文件命令 编辑:程序博客网 时间:2024/05/02 11:48
传递指对于一个节点i,如果j能到i,i能到k,那么j就能到k。
传递闭包,就是把图中所有满足这样传递性的节点都弄出来,计算完成后,我们也就知道任意两个节点之间是否相连。
break 指跳出一层循环;continue 结束本次循环,跳过本次判断语句
题目链接:http://poj.org/problem?id=3660
每只奶牛的技能独一无二,如果给奶牛们排序的话,能确定自己技能水平的奶牛排序后位置不变。
一只奶牛可以确定自己的水平,则一定和其他n-1只奶牛直接或间接比试过。
使用Floyd传递闭包算法,统计能赢过它的奶牛数+它赢过的奶牛数。如果这个数字等于n-1,说明该奶牛的水平可以确定。
#include <iostream>using namespace std;const int max_n=101;bool dp[max_n][max_n];int main(){int n,m;cin>>n>>m;for(int i=1;i<=m;i++){int a,b;cin>>a>>b;dp[a][b]=true;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(i==k||i==j||j==i)continue;dp[i][j]=dp[i][j]||(dp[i][k]&&dp[k][j]);}int ans=0;for(int i=1;i<=n;i++){int sum=0;for(int j=1;j<=n;j++){if(i!=j&&dp[i][j]) sum++;}for(int j=1;j<=n;j++){if(i!=j&&dp[j][i]) sum++;}if(sum==n-1) ans++;}cout<<ans;return 0;}
flord算法要K先循环。
0 0
- flord(传递闭包)
- 传递闭包,离散
- 传递闭包
- 传递闭包问题
- 传递闭包
- 计算传递闭包
- 传递闭包
- uva247 传递闭包
- 传递闭包
- 传递闭包
- floyd(传递闭包)
- 传递闭包
- 传递闭包
- 传递闭包-HDU1704
- hdu 1704 传递闭包
- hdu 1704 传递闭包
- zoj 1589 传递闭包
- HDU-1074 传递闭包
- 集合框架_集合多层嵌套的代码体现
- 第2章 Android 开发工具新接触
- Java利器之UML类图详解
- tips:Java的Random类和Random函数
- 文件包含命令以及C语言预处理概述
- flord(传递闭包)
- REST 在 Java 中的使用
- [00800]类与对象
- caffe框架图像处理常用命令
- python基础语法(8) 函数3
- 本机卸载软件后不能连接远程桌面了
- Linux网络编程15——I/O复用之poll详解
- 前端开发面试题
- 一道ACM老题之贪婪算法