http://47.95.147.191/problem/P3

http://47.95.147.191/problem/P3
规定边数的最短路,跑floyd+矩阵快速幂

#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<set>
#include<map>
#include<stack>
#include<cstring>
#define inf 2147483647
#define For(i,a,b) for(long long i=a;i<=b;i++)
#define p(a) putchar(a)
#define g() getchar()
#define mod 1000000007
//by war
//2020.2.26
using namespace std;
long long n,k,S,T,x,y,lim,c;
long long m[1010];
struct matrix{
    long long a[310][310];
    matrix operator*(const matrix&b)const{
        matrix r;
        For(i,1,n)
            For(j,1,n){
                r.a[i][j]=inf;
                For(k,1,n)
                r.a[i][j]=min(r.a[i][j],a[i][k]+b.a[k][j]);
            }
        return r;
    }
}a;
void in(long long &x)
{
    long long y=1;
    char c=g();x=0;
    while(c<‘0‘||c>‘9‘)
    {
    if(c==‘-‘)
    y=-1;
    c=g();
    }
    while(c<=‘9‘&&c>=‘0‘)x=(x<<1)+(x<<3)+c-‘0‘,c=g();
    x*=y;
}
void o(long long x)
{
    if(x<0)
    {
        p(‘-‘);
        x=-x;
    }
    if(x>9)o(x/10);
    p(x%10+‘0‘);
}

matrix ksm(matrix a,long long b){
    matrix r=a;b--;
    while(b>0){
        if(b%2==1) r=r*a;
        a=a*a;
        b>>=1;
    }
    return r;
}

int main(){
    in(lim);in(k);in(S);in(T);
    For(i,0,300)
        For(j,0,300)
            a.a[i][j]=inf;
    For(i,1,k){
        in(c);in(x);in(y);
        if(!m[x]) m[x]=++n;
        if(!m[y]) m[y]=++n;
        a.a[m[x]][m[y]]=a.a[m[y]][m[x]]=c;
    }
    matrix r=ksm(a,lim);
    o(r.a[m[S]][m[T]]);
    return 0;
}

原文地址:https://www.cnblogs.com/war1111/p/12368053.html

时间: 2024-10-17 17:52:37

http://47.95.147.191/problem/P3的相关文章

poj Problem A. Score Sequence(暴力)

这道题,对于我这种英文不好的人来说,有点费劲啊. 题目的意思:给你两组成绩,你要找出他们之间最大的公共子序列,不能有重复,然后输出两组数据. 第一组就是:按照从大到小输出最大子序列. 第二组就是:按照个位数由小到大输出,若个位数一样大,则小的在前输出最大子序列. 解题思路基本上已经出来了,就是千万要注意就是在最长子序列匹配之前就就把重复的数字给删除. 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h

BZOJ 1588 营业额统计 Splay

主要操作为Splay中插入节点,查找前驱和后继节点. 1: #include <cstdio> 2: #include <iostream> 3: #include <cmath> 4: using namespace std; 5: #define MaxL 100005 6: #define INF 0x7ffffff 7: #define keyTree sp[sp[root].child[1]].child[0] 8:   9: struct SplayTree

[Z] 计算机类会议期刊根据引用数排名

一位cornell的教授做的计算机类期刊会议依据Microsoft Research引用数的排名 link:http://www.cs.cornell.edu/andru/csconf.html The following are the journals and conferences in computer science that have published at least 100 papers (2003–2013), with at least 5 citations per pa

Xterm256终端颜色的名称

1 hi x016_Grey0 ctermfg=16 guifg=#000000 "rgb=0,0,0 2 hi x017_NavyBlue ctermfg=17 guifg=#00005f "rgb=0,0,95 3 hi x018_DarkBlue ctermfg=18 guifg=#000087 "rgb=0,0,135 4 hi x019_Blue3 ctermfg=19 guifg=#0000af "rgb=0,0,175 5 hi x020_Blue3

2016年中国500强排行榜(公司名单)

1 1 中国石油化工股份有限公司 2,018,883 32,207 2 2 中国石油天然气股份有限公司 1,725,428 35,653 3 3 中国建筑股份有限公司 880,577.13 26,061.9 4 4 中国工商银行股份有限公司 697,647 277,131 5 6 上海汽车集团股份有限公司 670,448.22 29,793.79 6 5 中国移动有限公司 668,335 108,539 7 7 中国中铁股份有限公司 624,104.14 12,257.67 8 11 中国平安保

Java学习-005-初学常用的几个经典循环控制源代码

最近一段时间公司 App 改版,一直处在需求评审.代码评审.测试计划.测试用例.用例评审.用例执行.缺陷管理.测试总结的循环中,因而博客也好久没有更新了.虽然工作确实忙了点,但是也是自己懒惰了,从今天开始陆续整理之前学习 Java 时写的 Java 程序,并记录在博客中,供自己查阅,也希望能给初学 Java 的亲们一份参考,希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 此文主要讲述在初学 Java 时,常用的几个经典的循环控制程序的源码整理.源代码测试通过日

基于H.264协议的视频传输系统中遇到的问题以及解决办法

问题1.视频压缩解码模块在运用的时候出现错误:解码器再解码第二帧视频图片的时候出现异常 client: ../../decoder/T264dec.c:594:T264dec_decode_nal: Assertion `0' failed. Aborted 对于该问题的分析及解决过程为: 1.  修改数据类型,所有缓存区改为unsigned char类型(原来统一为char 类型),但是还是遇到一样的异常错误,问题没有解决. 2.  查看缓存区具体内容是否与服务器端压缩的数据是一致的的,对照数

Oracle汉字转拼音package

--函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGongHeGuo --函数GetHzPYCAP(string)用于获取拼音首字母 --select GetHzPYCAP('中华人民共和国') from dual; --返回ZHRMGHG create or replace package GetHZPY is -- Author : ADMINIS

usaco-4.1-stall4-passed

这个题是最有意思的了,一次性通过,网络流,最大流法,匈牙利法,网上有一篇趣写算法系列--趣写算法系列之--匈牙利算法 这是我见过很有趣的东东了,推荐给大家, /* ID: qq104801 LANG: C++ TASK: stall4 */ #include <iostream> #include <fstream> #include <cstring> #include <vector> #include <queue> #include &l