模板

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<stack>
#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<queue>
using namespace std;
#define inf 2147483647
typedef long long ll;
const ll mod=1e9+;
const int maxn=+;
ll dis[maxn];
struct edg{
int to;
int w;
};
vector<edg > sm[maxn];
typedef pair<int ,int > P;//最短距离,标点
void dij(int v){
fill(dis,dis+maxn,-);
priority_queue<P,vector<P>,greater<P> > que;
que.push(P(,v));
P tem;
dis[v]=;
while(!que.empty()){
tem=que.top();
que.pop();
int i=tem.second;
if(tem.first>dis[i])
continue;
for(int j=;j<sm[i].size();j++){
edg e=sm[i][j];
if(dis[e.to]==-||dis[e.to]>dis[i]+e.w){
dis[e.to]=dis[i]+e.w;
que.push(P(dis[e.to],e.to));
}
}
}
}
int main(){
int n,m,s,t;
int u,v;
ll w;
ll ans=;
edg tem;
cin>>n>>m>>s>>t;
for(int i=;i<m;i++){
cin>>u>>v>>w;
w=log(w)/log();
tem.to=v;
tem.w=w;
sm[u].push_back(tem);
}
dij(s);
if(dis[t]==-){
cout<<"-1"<<endl;
}
else{
//cout<<dis[t]<<endl;
ll tem=;
while(dis[t]!=){
if(dis[t]%==){
ans=(ans*tem)%mod;
}
dis[t]/=;
tem=(tem*tem)%mod;
}
cout<<ans<<endl;
}
return ;
}

最新文章

  1. HTML之Hello World
  2. Swift建立栈的泛型结构体以及top()、push()、pop()定义函数的定义
  3. javascript变量问题
  4. 2014第五届蓝桥杯试题C/C++程序设计B组——切面条
  5. C#模拟键盘鼠标事件 SendKeys 的特殊键代码表(转)
  6. Scanner scanner=new Scanner(System.in)
  7. mcstructs-MircoCStructs用C语言实现的微型数据结构库
  8. 3.Node.js 自定义微信菜单
  9. eclipse中删除多余的tomcat server
  10. 20170723-Ioc与AOP
  11. CSS速查列表-1-(background)背景
  12. POJ-3259 Wormholes---SPFA判断有无负环
  13. LeetCode 81 - 搜索旋转排序数组 II - [二分+暴力]
  14. COMCMS_CORE 起步篇,如何运行和部署
  15. https证书概念
  16. http协议下载文件
  17. asio的网络通讯代码练手
  18. MariaDB学习记录
  19. PostgreSQL 常用的命令
  20. 【JavaScript】20款漂亮的css字体

热门文章

  1. RESET - 把一个运行时参数值恢复为缺省值
  2. [HNOI2015]亚瑟王(概率dp)
  3. Vue-鼠标按键修饰符
  4. python 图像处理中二值化方法归纳总结
  5. Ubuntu新建用户组
  6. Ubuntu中可以卸载的软件(持续更新)
  7. pytorch数据预处理错误
  8. Raspbian 在虚拟机上运行,运行Flask,供宿主机访问
  9. 早日选择一门自己喜欢的,然后瞄准目标,不达目的誓不罢休。像文章的作者一样成为一名成功的IT人士。
  10. 【CF1100F】Ivan and Burgers(线性基,分治)