题意:

求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. 解决:惠普HP LaserJet Pro M126a MFP 驱动 安装失败,及其它同类打印机失败问题

    注意:如果在 Windows XP 系统下安装出错,请先安装WindowsXP KB971276-v3补丁后再安装装驱动. 下载地址:http://www.dyjqd.com/soft/KB97127 ...

  2. I2C controller core之Bit controller(04)

    4) detect start/stop condition START- falling edge on SDA while SCL is high;  STOP -  rising edge on ...

  3. sqlserver where in 在 mysql

    ) tmp); 主句(select * from (从句 temp) sql的 where in 删除  要更改为  // in( select * from ((select idfrom twhe ...

  4. eas中删除原来的监听事件添加新的监听事件

    kdtEntrys.removeKDTEditListener(kdtEntrys.getListeners(KDTEditListener.class)[0]);  kdtEntrys.addKDT ...

  5. [51Nod 1301] 集合异或和 (dp)

    传送门 Solution 一道比较好的dp题 想了半天组合数QAQ 首先要知道的是 A<B一定是B有一位是1且A的这位是0且前面都相等 那么肯定是要枚举这一位在哪里然后求出方案数 方案数考虑类似 ...

  6. [luogu2587 ZJOI2008] 泡泡堂 (贪心)

    传送门 Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛 ...

  7. cent OS官网上下载老版本系统镜像的正确打开方式

    当时的情况是这样的: 客户需要给服务器安装cent OS 7.3操作系统,我打开官网https://www.centos.org/,点击“GET CENTOS”——>“Minimal ISO”, ...

  8. CodeForces - 340 C - Tourist Problem

    先上题目: A - Tourist Problem Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

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

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

  10. SecureCRT 会话丢失的处理办法

    SecureCRT 会话丢失的处理办法 在SecureCRT中已经有了70多个session,密码都记忆了,当然有些失效的也没有删除: 某一天,打开SecureCRT之后,发现session都没有了, ...