POJ 3613 Cow Relays

最短路可以采用Floyd来计算,但是限制时间在1s内,估计直接写会超时,所以要用到快速幂来优化。

快速幂的思想是:xy=xy/2∗2" role="presentation" style="position: relative;">xy=xy/2∗2xy=xy/2∗2 所以每次划分下去寻找最短路

(其实我也没完全想清楚,就不讲太清楚了,怕讲错)

//STATUS:C++_AC_125MS_1204KB
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
#define LL __int64
#define pii pair<int,int>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define mem(a,b) memset(a,b,sizeof(a))
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N=210,M=1000000,INF=0x3f3f3f3f,MOD=1999997;
const LL LLNF=0x3f3f3f3f3f3f3f3fLL;
const double DNF=100000000; int f[N*10],w[N][N];
int nt,n,m,s,t;
struct Matrix{
int ma[N][N];
Matrix friend operator * (const Matrix a,const Matrix b){
Matrix ret;
mem(ret.ma,0x3f);
int i,j,k;
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a.ma[i][k]+b.ma[k][j]<ret.ma[i][j])
ret.ma[i][j]=a.ma[i][k]+b.ma[k][j];
return ret;
}
}mta,mtb; int pow(int k)
{
mem(mtb.ma,0x3f);
for(int i=0;i<n;i++)mtb.ma[i][i]=0;
while(k){
if(k&1)mtb=mtb*mta;
mta=mta*mta;
k>>=1;
}
return mtb.ma[f[s]][f[t]];
} int main()
{
// freopen("in.txt","r",stdin);
int i,a,b,c;
while(~scanf("%d%d%d%d",&nt,&m,&s,&t))
{
n=0;
mem(f,-1);
mem(mta.ma,0x3f);
for(i=0;i<m;i++){
scanf("%d%d%d",&c,&a,&b);
if(f[a]==-1)f[a]=n++;
if(f[b]==-1)f[b]=n++;
mta.ma[f[a]][f[b]]=mta.ma[f[b]][f[a]]=Min(mta.ma[f[a]][f[b]],c);
} printf("%d\n",pow(nt));
}
return 0;
}

最新文章

  1. SAP CRM 显示消息/在消息中进行导航
  2. NOIP2016游记
  3. jQuery弹出窗口浏览图片
  4. CentOS下通过yum安装svn及配置
  5. java类型占用字节数&amp;类型转换
  6. C#的OpenFileDialog和SaveFileDialog的常见用法(转)
  7. 为什么p标签不能嵌套div??
  8. Cordic 算法之 反正切
  9. Object-c学习之路十一(NSDate和反射)
  10. 【bzoj3998】 TJOI2015—弦论
  11. Egret学习笔记 (Egret打飞机-2.开始游戏)
  12. docker-compose.yml 配置文件详解及项目发布
  13. 基于UML网络教学管理平台模型的搭建
  14. Android Framework源码反编译
  15. javascript_函数式_链式编程
  16. CentOS 65 安装vmware tools 杂记
  17. Linux上安装设置mysql 5.7.24
  18. SQL Server学习记录之获取每月每季度每年第一天和最后一天
  19. Linux用户、组帐号和权限(学习笔记九)
  20. 源码管理--llorch的Visual Studio基本教程(四)

热门文章

  1. Windows平台下Git(gitblit)服务器搭建
  2. VC++ 2010编译错误 fatal error C1189 error This file requires _WIN32_WINNT to be #defined at least
  3. ubuntu安装nginx时提示error: the HTTP rewrite module requires the PCRE library
  4. Java线程池的简单使用
  5. 找不到方法 Void Newtonsoft.Json.JsonConvert.set_DefaultSettings
  6. OpenvSwitch代码分析之bridge和port
  7. 嵌入式开发之davinci---IPIPE、IPIPEIF and ISIF这三者有什么区别
  8. ASP.NET MVC 提供与访问 Web Api
  9. ie6不支持png图片的解决办法
  10. YTU 1020: I think it