注意最短路转移的单位元是对角线为0,其它为INF。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#include <bitset>
#define mkp make_pair
using namespace std;
const double EPS=1e-;
typedef long long lon;
const lon SZ=,SSZ=*SZ,one=,INF=0x7FFFFFFF,mod=;
int n,m,S,T,mnum;
int mp[SZ][SZ];
struct nd{
int len,bg,fn;
nd(int a=,int b=,int c=):len(a),bg(b),fn(c){}
};
nd arr[SZ];
vector<int> ls; int getid(int x)
{
return lower_bound(ls.begin(),ls.end(),x)-ls.begin()+;
} void init()
{
cin>>n>>m>>S>>T;
for(int i=;i<=m;++i)
{
cin>>arr[i].len>>arr[i].bg>>arr[i].fn;
ls.push_back(arr[i].bg);
ls.push_back(arr[i].fn);
}
sort(ls.begin(),ls.end());
ls.erase(unique(ls.begin(),ls.end()),ls.end());
mnum=ls.size();
for(int i=;i<=mnum;++i)
{
for(int j=;j<=mnum;++j)
{
// if(i==j)mp[i][j]=0;
// else
mp[i][j]=(<<);
}
}
for(int i=;i<=m;++i)
{
int bg=getid(arr[i].bg);
int fn=getid(arr[i].fn);
mp[bg][fn]=mp[fn][bg]=arr[i].len;
}
} void mul(int dst[][SZ],int x[][SZ],int y[][SZ])
{
int res[SZ][SZ];
memset(res,0x3f,sizeof(res));
// for(int i=1;i<=mnum;++i)
// {
// for(int j=1;j<=mnum;++j)
// {
// res[i][j]=(1<<29);
// }
// }
for(int i=;i<=mnum;++i)
{
for(int j=;j<=mnum;++j)
{
for(int k=;k<=mnum;++k)
{
res[i][j]=min(res[i][j],x[i][k]+y[k][j]);
}
}
}
for(int i=;i<=mnum;++i)
{
for(int j=;j<=mnum;++j)
{
dst[i][j]=res[i][j];
}
}
} void work()
{
int res[SZ][SZ],ele[SZ][SZ];
memset(res,0x3f,sizeof(res));
for(int i=;i<=mnum;++i)res[i][i]=;
memcpy(ele,mp,sizeof(mp));
for(;n;n/=)
{
if(n&)mul(res,res,ele);
mul(ele,ele,ele);
}
S=getid(S),T=getid(T);
cout<<res[S][T]<<endl;
} int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
int casenum;
//cin>>casenum;
//cout<<casenum<<endl;
//for(int time=1;time<=casenum;++time)
//for(int time=1;cin>>n>>m;++time)
{
//printf("Case #%d:\n",time);
init();
work();
}
return ;
}

最新文章

  1. 如何隐藏DIV对象
  2. 从源代码剖析Mahout推荐引擎
  3. 论C#未来发展
  4. css3 flex流动自适应响应式布局样式类
  5. 济南学习 Day 3 T2 pm
  6. LoadRunner学习记录--Flights打开空白页的问题
  7. .net平台 .net Framework 组织结构 .net Framework类库 CLR C# 介绍
  8. Yii cookie操作
  9. anzhaung
  10. ue中替换行
  11. 我为什么坚持DBA一定要懂开发
  12. Cocos2D:塔防游戏制作之旅(十二)
  13. Java 工厂模式(一)— 简单工厂模式
  14. Java概念、语法和变量基础整理
  15. Nginx 学习笔记(九)申请Let&#39;s Encrypt通配符HTTPS证书
  16. 文本转音频(百度语音合成api)(python)(原创)
  17. Python GIL(Global Interpreter Lock)
  18. HTML5 Canvas ( 扩展context(&#39;2d&#39;) ) CanvasRenderingContext2D.prototype.你的方法名
  19. 使用python来搞定redis的订阅功能
  20. hdu4771 Stealing Harry Potter&#39;s Precious(DFS,BFS)

热门文章

  1. mysql新建数据库、新建用户及授权操作
  2. Java如何获取图片验证码保存
  3. python基础(8)-装饰器函数&amp;进阶
  4. [sql]sql的select字符串切割
  5. java求最大公约数,和最小公倍数
  6. spring boot + vue + element-ui全栈开发入门——集成element-ui
  7. Spring 工具包
  8. 必须添加对程序集&quot;System.Core&quot;的引用
  9. the network could not establish the connection
  10. flutter 获取设备屏幕大小