最短路练习
小小菜鸡俊
这个作者很懒,什么都没留下…
展开
-
POj1860(floyd+正权回路)
题目传送门 题意:有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。 题解:我们可以用货币种类编号建图,在图上任意两点表示兑换关系并且是双向的,值得注意的是货币A没有兑换是的权值是不变的,而A兑换成B那么B的权值就是(k-Cab)*Rab,那么我们只要Floyd跑一边。然后判断是否存在一个dis[v]>dis[i]+w; 代码: #inclu原创 2020-07-31 18:56:07 · 627 阅读 · 0 评论 -
Poj3660(floyd)
题目传送门 题意:编号为1-N的奶牛参加比赛,告诉我们m场比赛结果试问有几头奶牛的排名可以确定。 题解:其实就是一个传递闭包的模板题,用Floyd把所有有联系的比赛结果串在一起。 Ac 代码: #include<bits/stdc++.h> using namespace std; const int maxn=1e2+5; int rp[maxn][maxn]; //rp[i][j]=1表示编号为i的奶牛战胜编号为j的奶牛; int n,m,u,v; void floyd.原创 2020-07-31 18:36:53 · 149 阅读 · 0 评论