【题目链接】
             点击打开链接
【算法】
           朴素算法,就是跑N-1遍floyd
           而满分算法就是通过矩阵快速幂加速这个过程
【代码】
          注意要离散一下
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXP 250
#define MAXC 1010
const int INF = 1e9; int N,T,S,E,i,j,l,u,v,tot;
int h[MAXC]; struct Matrix
{
int mat[MAXP][MAXP];
} ans; inline void multipy(Matrix &a,Matrix b)
{
int i,j,k;
static Matrix ans;
for (i = ; i <= tot; i++)
{
for (j = ; j <= tot; j++)
{
ans.mat[i][j] = INF;
}
}
for (i = ; i <= tot; i++)
{
for (j = ; j <= tot; j++)
{
for (k = ; k <= tot; k++)
{
ans.mat[i][j] = min(ans.mat[i][j],a.mat[i][k]+b.mat[k][j]);
}
}
}
a = ans;
} inline void power(Matrix &a,int n)
{
int i,j;
static Matrix ans=a,p=a;
n--;
while (n > )
{
if (n & ) multipy(ans,p);
n >>= ;
multipy(p,p);
}
a = ans;
} int main()
{ for (i = ; i < MAXP; i++)
{
for (j = ; j < MAXP; j++)
{
ans.mat[i][j] = INF;
}
}
scanf("%d%d%d%d",&N,&T,&S,&E);
for (i = ; i <= T; i++)
{
scanf("%d%d%d",&l,&u,&v);
if (!h[u]) h[u] = ++tot;
if (!h[v]) h[v] = ++tot;
ans.mat[h[u]][h[v]]= ans.mat[h[v]][h[u]] = min(ans.mat[h[u]][h[v]],l);
}
power(ans,N);
printf("%d\n",ans.mat[h[S]][h[E]]); return ;
}

最新文章

  1. java笔记--笔试中极容易出错的表达式的陷阱
  2. 高性能javascript学习笔记系列(5) -快速响应的用户界面和编程实践
  3. iOS开发多线程篇—自定义NSOperation
  4. hdu-5496 Beauty of Sequence(递推)
  5. js中event.target,this
  6. poj 2114 Boatherds 树的分治
  7. ASP.NET Core - Razor 页面简介
  8. jenkins的搭建
  9. android bitmap压缩几种色彩详解
  10. 简述在ADO中使用接口的抽象数据提供程序以及ADO.NET数据提供程序工厂模型
  11. HTTP/1.0 vs HTTP/1.1 vs HTTP/2
  12. Volley Get网络请求
  13. 使用vue.js路由踩到的一个坑Unknown custom element
  14. python学习day4 数据类型 if语句
  15. Redis能干啥?细看11种Web应用场景[转]
  16. 《Python黑帽子:黑客与渗透测试编程之道》 玩转浏览器
  17. c语言-遍历pci设备(1)io访问
  18. Kubernetes1.91(K8s)安装部署过程(六)--node节点部署
  19. PAT A1009 Product of Polynomials (25 分)——浮点,结构体数组
  20. cmdb安装脚本

热门文章

  1. js中给正则传参、传递变量
  2. Mysql:零散记录
  3. vector元素的删除 remove的使用 unique的使用
  4. Javascript类型转换的规则全面&amp;附有实例
  5. [OJ#39]左手右手
  6. hdu3592(差分约束) (线性)
  7. node.js 读取文件--createReadStream
  8. IntentService用于服务中开启子线程的自动关闭
  9. python 安装依赖几个问题---HttpScan
  10. Layui动画、按钮、表单