题面

解题思路 ##

floyd+矩阵快速幂,跟GhostCai爷打赌用不用离散化,最后完败。。GhostCai真是tql !

有个巧妙的方法就是将节点重新编号,因为与节点无关。

代码

#include<bits/stdc++.h>

using namespace std;
const int MAXN = 1005; int n,t,s,e;
int edge[MAXN][MAXN];
int num[MAXN],tot; struct Mat{
int a[105][105];
Mat operator*(const Mat &h){
Mat c;
memset(c.a,0x3f,sizeof(c.a));
for(register int k=1;k<=tot;k++)
for(register int i=1;i<=tot;i++)
for(register int j=1;j<=tot;j++)
c.a[i][j]=min(c.a[i][j],a[i][k]+h.a[k][j]);
return c;
}
}dis,ans; inline void fast_pow(Mat x,int y){
for(;y;y>>=1){
if(y&1) dis=dis*x;
x=x*x;
}
} int main(){
ios::sync_with_stdio(0);
memset(dis.a,0x3f,sizeof(dis.a));
cin>>n>>t>>s>>e;
for(register int i=1;i<=t;i++){
int a,b,c;
cin>>a>>b>>c;
if(!num[c]) num[c]=++tot;
if(!num[b]) num[b]=++tot;
dis.a[num[c]][num[b]]=dis.a[num[b]][num[c]]=a;
}
ans=dis;
fast_pow(ans,n-1);
cout<<dis.a[num[s]][num[e]]<<endl;
return 0;
}

洛谷 P2886 [USACO07NOV]牛继电器Cow Relays的更多相关文章

  1. 洛谷P2886 [USACO07NOV]牛继电器Cow Relays

    题意很简单,给一张图,把基本的求起点到终点最短路改成求经过k条边的最短路. 求最短路常用的算法是dijkstra,SPFA,还有floyd. 考虑floyd的过程: c[i][j]=min(c[i][ ...

  2. P2886 [USACO07NOV]牛继电器Cow Relays

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

  3. [LUOGU] P2886 [USACO07NOV]牛继电器Cow Relays

    https://www.luogu.org/problemnew/show/P2886 给定无向连通图,求经过k条边,s到t的最短路 Floyd形式的矩阵乘法,同样满足结合律,所以可以进行快速幂. 离 ...

  4. [USACO07NOV]牛继电器Cow Relays (最短路,DP)

    题目链接 Solution 非正解 似乎比较蛇啊,先个一个部分分做法,最短路+\(DP\). 在求最短路的堆或者队列中存储元素 \(dis_{i,j}\) 代表 \(i\) 这个节点,走了 \(j\) ...

  5. luogu题解 P2886 【牛继电器Cow Relays】-经过K边最短路&矩阵

    题目链接: https://www.luogu.org/problemnew/show/P2886 Update 6.16 最近看了下<算法导论>,惊奇地发现在在介绍\(APSP\) \( ...

  6. [USACO07NOV]牛继电器Cow Relays

    题目描述 给出一张无向连通图,求S到E经过k条边的最短路. 输入输出样例 输入样例#1: 2 6 6 4 11 4 6 4 4 8 8 4 9 6 6 8 2 6 9 3 8 9 输出样例#1: 10 ...

  7. Luogu 2886 [USACO07NOV]牛继电器Cow Relays

    BZOJ 1706权限题. 倍增$floyd$. 首先这道题有用的点最多只有$200$个,先离散化. 设$f_{p, i, j}$表示经过$2^p$条边从$i$到$j$的最短路,那么有转移$f_{p, ...

  8. [luoguP2886] [USACO07NOV]牛继电器Cow Relays(矩阵)

    传送门 矩阵快速幂,本质是floyd 把 * 改成 + 即可 注意初始化 因为只有100条边,所以可以离散化 #include <cstdio> #include <cstring& ...

  9. 洛谷P3045 [USACO12FEB]牛券Cow Coupons

    P3045 [USACO12FEB]牛券Cow Coupons 71通过 248提交 题目提供者洛谷OnlineJudge 标签USACO2012云端 难度提高+/省选- 时空限制1s / 128MB ...

随机推荐

  1. dart中extends、 implements、with的用法与区别

    一.概述 继承(关键字 extends) 混入  mixins (关键字 with) 接口实现(关键字 implements) 这三种关系可以同时存在,但是有前后顺序: extends -> m ...

  2. linux学习(五)-----组管理和权限管理

    Linux 组基本介绍 在 linux 中的每个用户必须属于一个组,不能独立于组外.在 linux 中每个文件有所有者.所在组.其它组的概念. 1)所有者 2)所在组 3)其它组 4)改变用户所在的组 ...

  3. 前端笔记:animate+easing用法(hexo next主题自定义动画)

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io easing介绍 animate默认是有加速度 ...

  4. 初识OpenCV-Python - 009: 图像梯度

    本节学习找到图像的梯度和边界.只要用到的函数为: cv2.Sobel(), cv2.Scharr(), cv2.Laplacian() 1. Laplacian 和 Sobel的对比 import c ...

  5. css3 随记

    1 让子元素对其的方式  box-pack 2 -webkit-text-size-adjust  解决字体大小失效问题http://www.frontopen.com/273.html 3 disp ...

  6. Aria2 使用

    没错,又是受够了迅雷.旋风的各种奇葩减速(哥哥我还买了了VIP!),IDM 对协议支持又太少还有事没事提示你不是正版三天两头闹着要更新.于是我想起来之前看到过的 Aria2,虽然之前也只是略有耳闻,但 ...

  7. uoj33 树上GCD

    题意:给你一棵树,根节点为1,每条边长度为1.定义f(u,v)=gcd(u-lca(u,v),lca(u,v)-v),求有多少个无序点对f(u,v)=i.对每个i输出答案. n<=20W. 标程 ...

  8. vue倒计时:天时分秒

    data数据定义 data () { return { curStartTime: '2019-07-31 08:00:00', day: '0', hour: '00', min: '00', se ...

  9. Mac配置maven环境命令

    1.安装:解压下载好的maven的文件,解压到你想要的文件夹底下. 2.配置 1)打开终端输入命令 vim ~/.bash_profile (编辑环境变量配置文件) 2)按下i,进入编辑模式 3)在环 ...

  10. 0810NOIP模拟测试赛后总结

    明日之后将是什么. 悲哀, 还是希望? 60分我没脸了…… 所以T1好不容易想到了正解结果实现打挂w0了…… 贪心想的还是相当完美的. 不知道我咋想的开了1e6个栈然后dfs模拟结果MLE原地自爆…… ...