一,Floyd核心:

for (int k = 1; k <= n; k++) {//n为节点个数for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (dis[i][k] + dis[k][j] > dis[i][j])dis[i][j] = dis[i][k] + dis[k][j];}}
}

二、传递闭包
题意:第一行表示有n个人m场比赛,后面m行每行有A B,表示A打败的B,问最后能够确定排名的人数有多少。

思路:判断一个人的排名是否确定,只要他与其余n-1个人的关系确定即可。这里涉及到了传递,如A打败了B,B打败了C,那么A间接打败了C。

这里跟floyd算法的思想是一样的,不同的是,floyd求得是最短路,if里更新的距离,这里是判断关系,不需要距离更新。

我们创建一个数字s,s[i][j]表示i打败了j,具体代码如下:

#include<iostream>
#include<stdio.h>
using namespace std;
const int maxn = 100 + 5;
typedef long long LL;int s[maxn][maxn];
int n, m;void floyd() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {for (int k = 1; k <= n; k++) {if (s[j][i] && s[i][k])s[j][k] = 1;}}}
}int main() {while (scanf("%d %d", &n, &m) != EOF) {memset(s, 0, sizeof(s));for (int i = 1; i <= m; i++) {int a, b;scanf("%d %d", &a, &b);s[a][b] = 1;}floyd();int sum = 0;int t = 0;for (int i = 1; i <= n; i++) {t = 0;for (int j = 1; j <= n; j++) {if (s[i][j] || s[j][i]) t++;}if (t == n - 1)sum++;}cout << sum << endl;}system("pause");return 0;
}

Floyd + 传递闭包相关推荐

  1. POJ 3660 Cow ContestCow(Floyd传递闭包)题解

    题意:给出m个关系,问你能确定机头牛的排名 思路:要确定排名那必须要把他和其他n-1头牛比过才行,所以Floyd传递闭包,如果赢的+输的有n-1就能确定排名. 代码: #include<cstd ...

  2. POJ 3275 Ranking the Cows (floyd传递闭包)

    Ranking the Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2248   Accepted: 1045 ...

  3. POJ - 1094 Sorting It All Out(拓扑排序+floyd传递闭包)

    题目链接:点击查看 题目大意:给出N个点以及M个比较关系,问在第几个数字可以确定出唯一的序列,或者判断出矛盾的序列,或者最后也无法确定出一个唯一的序列 题目分析:关于这个题目可以直接分类讨论,可以直接 ...

  4. POJ1683 Puzzlestan ——Floyd传递闭包+Dfs

    好久没写Dfs了,拿来练手. WA了一次,没有判断中间的情况-- 解法:先用Floyd传递闭包处理哪些点一定要在一起.哪些点一定不能在一起,六重循环. 然后深搜,res[i][j]表示1,i这个物品在 ...

  5. 【POJ - 2594】Treasure Exploration(floyd传递闭包 + 最小路径覆盖,图论)

    题干: Have you ever read any book about treasure exploration? Have you ever see any film about treasur ...

  6. CIA3 NOI接站(tarjan缩环+Floyd传递闭包+可相交最小路径覆盖)

    可以发现,题目求得就是一个可相交最小路径覆盖,但是有环.所以我们先用tarjan把环都缩掉,然后Floyd传递闭包,求二分图最大匹配,答案就是scc-ans. #include <cstdio& ...

  7. H - Cow Contest POJ - 3660(Floyd 传递闭包)

    H - Cow Contest POJ - 3660 题意: 有 n 头牛比赛,边 1 -> 2 代表 1 能赢 2 ,给你 m 条边,问能确定出多少头牛的名次? 思路: 如果 1->2 ...

  8. 【BZOJ5335】【TJOI2018】—智力竞赛(floyd传递闭包+二分图匹配)

    传送门 可以二分变成直接求最大链覆盖,因为可以重复经过一个点 floydfloydfloyd传递闭包就可以了 #include<bits/stdc++.h> using namespace ...

  9. uva 247(floyd传递闭包)

    为什么,逗号后面,还有空格........ #include <iostream> #include <cstring> #include <algorithm> ...

  10. 【图论专题】Floyd算法及其扩展应用

    Floyd的拓展应用: 任意两点最短路 传递闭包 找最小环 恰好经过k条边的最短路(倍增) 题目列表: 题目 算法 AcWing 1125. 牛的旅行 任意两点最短路Floyd AcWing 343. ...

最新文章

  1. 《术以载道——软件过程改进实践指南》—第1章1.1节对CMMI的基本认识
  2. Android CursorAdapter
  3. ZooKeeper入门(五)配置集群和选举机制
  4. 电子徽章:融创意、疯狂与电子设计中
  5. 【ASP.NET Core】处理异常
  6. IME输入法编程心得
  7. 2017年3月21日
  8. jQuery~函数封装记1
  9. scrum 12.8
  10. 广西农业职业技术学院计算机,学科分类与代码-广西农业职业技术学院.doc
  11. ei会议论文含金量高吗?
  12. 昵图网显示内部服务器错误,为什么博客老是显示网页错误?无法正常打开
  13. 互联网教育已过时,教育科技才是未来的趋势
  14. dismiss all popup view
  15. discord验证无法通过_如何通过Discord的“上线”直播
  16. LinuxStudyNote(29)-Linux常用命令(6)-压缩解压命令汇总gzip、gunzip、tar、zip、unzip、bzip2、bunzip2
  17. dialog设置最大高度占比
  18. 基于java与sqlserver2008的班级信息管理系统源代码,图书管理系统课程设计报告(基于JAVA和SQL.Server).doc...
  19. 电商API:拍立淘图片搜索
  20. 虾扑:shopee虾皮怎么上传宝贝

热门文章

  1. java基于教务系统管理总结_基于JAVA的教务管理系统的设计与实现
  2. Visio Professional 2019 激活方法详解
  3. Vscode新建vue模板
  4. 医护人员计算机专业培训内容,电子病历-住院医生工作站的前期培训
  5. Windows 软件管理
  6. 如何把电视盒子做成游戏机? —— 破解电视IPTV盒子(Skyworth E900-S)
  7. python3.7安装pyltp出错_python安装pyltp包
  8. 微信小程序直播插件live-player-plugin使用
  9. 【OTT】国内主要OTT平台背后的那些CDN服务商
  10. php报修小程序,微信小程序报修管理系统