题意:

求s到e恰好经过n边的最短路

思路:

这题已经被我放了好长时间了。

原来是不会矩阵乘法,快速幂什么的也一知半解

现在终于稍微明白了点了

其实就是把矩阵乘法稍微改改 改成能够满足结合律的矩阵“加法”,也就是floyd的步骤。





我就直接把集训队论文放上来吧。。。。(证明它满足结合率的,,,现在我看着还是懵逼的) 希望以后回头看的时候能够看懂吧

注意这里初始化的时候自己到自己的权值不能赋成零。。因为这个WA了一会儿

// by SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int c[1000050],cnt=0;
int n,t,s,e,xx,yy,zz;
struct matrix{
int a[205][205];
void init(){memset(a,0x3f,sizeof(a));}
}map,cpy;
matrix add(matrix &a,matrix &b){
matrix jy;jy.init();
for(int i=1;i<=cnt;i++)
for(int j=1;j<=cnt;j++)
for(int k=1;k<=cnt;k++)
jy.a[i][j]=min(a.a[i][k]+b.a[k][j],jy.a[i][j]);
return jy;
}
void pow(matrix &ans,int x){
while(x){
if(x&1)ans=add(ans,cpy);
cpy=add(cpy,cpy);
x>>=1;
}
printf("%d\n",ans.a[c[s]][c[e]]);
}
int main(){
map.init();
scanf("%d%d%d%d",&n,&t,&s,&e);
for(int i=1;i<=t;i++){
scanf("%d%d%d",&zz,&xx,&yy);
if(!c[xx])c[xx]=++cnt;
if(!c[yy])c[yy]=++cnt;
map.a[c[xx]][c[yy]]=map.a[c[yy]][c[xx]]=zz;
}
for(int i=1;i<=cnt;i++)
for(int j=1;j<=cnt;j++)
cpy.a[i][j]=map.a[i][j];
pow(map,n-1);
}

POJ 3613 floyd+矩阵快速幂的更多相关文章

  1. poj 3613 经过k条边最短路 floyd+矩阵快速幂

    http://poj.org/problem?id=3613 s->t上经过k条边的最短路 先把1000范围的点离散化到200中,然后使用最短路可以使用floyd,由于求的是经过k条路的最短路, ...

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

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

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

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

  4. POJ 3744 【矩阵快速幂优化 概率DP】

    搞懂了什么是矩阵快速幂优化.... 这道题的重点不是DP. /* 题意: 小明要走某条路,按照个人兴致,向前走一步的概率是p,向前跳两步的概率是1-p,但是地上有地雷,给了地雷的x坐标,(一维),求小 ...

  5. poj 3070 Fibonacci (矩阵快速幂乘/模板)

    题意:给你一个n,输出Fibonacci (n)%10000的结果 思路:裸矩阵快速幂乘,直接套模板 代码: #include <cstdio> #include <cstring& ...

  6. poj 3070 Fibonacci 矩阵快速幂

    Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. F ...

  7. POJ——3070Fibonacci(矩阵快速幂)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12329   Accepted: 8748 Descri ...

  8. foj 2173 floyd+矩阵快速幂

     Problem 2173 Nostop Accept: 52    Submit: 210 Time Limit: 3000 mSec    Memory Limit : 32768 KB  Pro ...

  9. POJ 3070 Fibonacci 矩阵快速幂模板

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18607   Accepted: 12920 Descr ...

随机推荐

  1. 彻底去除Google AdMob广告

    应用中包含广告是能够理解的,但经常造成用户误点,或者广告切换时造成下载流量,就有点让人不舒服了. 以下就以Google AdMob广告为例,看怎样彻底去除他. 先分析一下Google AdMob的工作 ...

  2. Challenge–response authentication 挑战(询问)应答机制

    In computer security, challenge–response authentication is a family of protocols in which one party ...

  3. marquee标签弹幕效果

    播放个视频的时候看到很有趣的弹幕,想着前端能不能做个弹幕效果.弹幕是滚动的,所以首先想到了<marquee>标签.但事实上,<marquee>标签不是w3c的标准,只是主流的浏 ...

  4. java HttpURLConnection 登录网站 完整代码

    import java.io.*; import java.util.*; import java.net.*; public class WebTest { public static void m ...

  5. 复习MySQL④查询功能、连接方式、联合查询

    用select语句查询: select〈目标列组〉 from〈数据源〉 [where〈元组选择条件〉] [group by〈分列组〉[having 〈组选择条件〉]] [order by〈排序列1〉〈 ...

  6. Python学习【第1篇】:环境配置

    1. 下载安装包 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi    # 2.7安装包   https://www. ...

  7. __int128的实现

    #include<bitset> #include<algorithm> #include<iostream> #include<string> #in ...

  8. MySql数据库的一些基本操作---------------SQL语法

    MySql数据库是比较常用的关系型数据库,操作用的是sql语句,下面来说一说MySql的一些基本操作 MySql数据库是一种C/S型的模式,即客户端/服务器端,对应到具体应用上,便是bin目录下的my ...

  9. POJ2116 Death to Binary?

    /* POJ2116 Death to Binary? http://poj.org/problem?id=2116 齐肯多夫定理 */ #include <cstdio> #includ ...

  10. installed jre指向jdk而非jre位置&

    1.eclipse菜单 - Window - Preferences- Java - Installed JREs 将配置的JRE定位到JDK,例如JRE home:D:\Program Files ...