题目大概要求从起点到终点恰好经过k条边的最短路。

离散数学告诉我们邻接矩阵的k次幂就能得出恰好经过k条路的信息,比如POJ2778

这题也一样,矩阵的幂运算定义成min,而min满足结合律,所以可以用快速幂求解。

另外这题点的序号要离散化一下,最多也就200个点。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define INF (1<<29) int N; struct Mat{
int m[][];
Mat(){
for(int i=; i<; ++i){
for(int j=; j<; ++j) m[i][j]=INF;
}
}
};
Mat operator*(const Mat &m1,const Mat &m2){
Mat m;
for(int i=; i<N; ++i){
for(int j=; j<N; ++j){
for(int k=; k<N; ++k){
m.m[i][j]=min(m.m[i][j],m1.m[i][k]+m2.m[k][j]);
}
}
}
return m;
}; int idx[]; int main(){
Mat m;
int n,t,s,e,a,b,c;
scanf("%d%d%d%d",&n,&t,&s,&e);
memset(idx,-,sizeof(idx));
while(t--){
scanf("%d%d%d",&c,&a,&b);
if(idx[a]==-){
idx[a]=N++;
}
if(idx[b]==-){
idx[b]=N++;
}
m.m[idx[a]][idx[b]]=m.m[idx[b]][idx[a]]=c;
}
--n;
Mat ans=m;
while(n){
if(n&){
ans=ans*m;
}
m=m*m;
n>>=;
}
printf("%d",ans.m[idx[s]][idx[e]]);
return ;
}

POJ3613 Cow Relays(矩阵快速幂)的更多相关文章

  1. POJ3613 Cow Relays [矩阵乘法 floyd类似]

    Cow Relays Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7335   Accepted: 2878 Descri ...

  2. [POJ3613] Cow Relays(Floyd+矩阵快速幂)

    解题报告 感觉这道题gyz大佬以前好像讲过一道差不多的?然鹅我这个蒟蒻发现矩阵快速幂已经全被我还给老师了...又恶补了一遍,真是恶臭啊. 题意 给定一个T(2 <= T <= 100)条边 ...

  3. POJ 3631 Cow Relays Floyd+矩阵快速幂

    题目描述 For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race ...

  4. poj 3613 Cow Relays【矩阵快速幂+Floyd】

    !:自环也算一条路径 矩阵快速幂,把矩阵乘法的部分替换成Floyd(只用一个点扩张),这样每"乘"一次,就是经过增加一条边的最短路,用矩阵快速幂优化,然后因为边数是100级别的,所 ...

  5. 疯子的算法总结(九) 图论中的矩阵应用 Part 1+POJ3613 Cow Relays

    图的存储有邻接矩阵,那么他就具备一些矩阵的性质,设有一个图的demo[100][100];那么demo[M][N]就是M—>N的距离,若经过一次松弛操作demo[M][N]=demo[M][K] ...

  6. poj3613Cow Relays——k边最短路(矩阵快速幂)

    题目:http://poj.org/problem?id=3613 题意就是求从起点到终点的一条恰好经过k条边的最短路: floyd+矩阵快速幂,矩阵中的第i行第j列表示从i到j的最短路,矩阵本身代表 ...

  7. bzoj1706 [usaco2007 Nov]relays 奶牛接力跑 矩阵快速幂

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1706 题解 换个方法定义矩阵乘法:先加再取 \(\min\). 对于一个 \(n\times ...

  8. HDU 5950 矩阵快速幂

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  9. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  10. HDU 5950 - Recursive sequence - [矩阵快速幂加速递推][2016ACM/ICPC亚洲区沈阳站 Problem C]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with ...

随机推荐

  1. August 10th, 2016, Week 33rd, Wednesday

    The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...

  2. eclipse svn设置忽略文件

  3. 解决eclipseMavne的web项目debug时没有源码

  4. Elo rating system 模拟

    package org.cc.foo_008; import java.util.ArrayList; import java.util.List; import java.util.Random; ...

  5. IT人学习方法论(三):高效学习

    一些有关“怎么学”的建议 首先需要明确方向,否则即使学习方法再高效,也不免南辕北辙,背离自己的目标.关于学习方向的讨论,请参见之前的一篇文章 .下面我来重点说一说有关“怎么学”的建议. IT技术,不是 ...

  6. 对Cookie和Session的深入理解

    session对象 session对象用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足.HTTP协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端 ...

  7. 无废话ExtJs 入门教程三[窗体:Window组件]

    无废话ExtJs 入门教程三[窗体:Window组件] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3 ...

  8. 记录一次冷备恢复遇到的 ORA-00304问题

    希望通过冷备一个数据库,然后在另外一台数据库进行恢复 1.打tar包 tar -czvf Prod.tar.gz *control01.ctlcontrol02.ctlredo01.logredo02 ...

  9. HTML页面实现返回顶部效果 go to top

    1.首先导入jQuery插件. 2.js代码: $(window).scroll(function () { if($(window).scrollTop()>=100) { $(". ...

  10. golang debug with LiteIDE

    golang 的调试比较麻烦,debug stop into 无法跳转到自己写的代码,但是能够跳转到系统提供的代码. 以下是简单的测试代码: package main import ( "f ...