bzoj 2015
2024-09-06 02:03:16
http://www.lydsy.com/JudgeOnline/problem.php?id=2015
裸最短路(' ' ) 不过我最初以为是mst (' ' )
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std; const int maxn = 100010;
const int maxe = 100010;
const int INF = 0x3f3f3f3f; int n, m, Q; struct edge {
int t, d;
edge* next;
}e[maxe * 2], *head[maxn]; int ne = 0; void addedge(int f, int t, int d) {
e[ne].t = t, e[ne].d = d, e[ne].next = head[f], head[f] = e + ne ++;
} struct pr {
int dis, pos;
pr(int a, int b) {
dis = a, pos = b;
}
}; bool operator < (const pr &a, const pr &b) {
return a.dis > b.dis;
} priority_queue <pr> q;
int dis[maxn]; void dijkstra(int s) {
memset(dis, INF, sizeof(dis));
dis[s] = 0;
for(int i = 1; i <= n; ++ i) q.push(pr(dis[i], i));
while(!q.empty()) {
pr x = q.top(); q.pop();
if(x.dis != dis[x.pos]) continue;
for(edge* p = head[x. pos]; p; p = p-> next) {
if(dis[p-> t] > dis[x. pos] + p-> d)
dis[p-> t] = dis[x. pos] + p-> d, q.push(pr(dis[p-> t], p-> t));
}
}
} int int_get() {
int x = 0; char c = (char)getchar(); bool f = 0;
while(!isdigit(c)) {
if(c == '-') f = 1;
c = (char)getchar();
}
while(isdigit(c)) {
x = x * 10 + (int)(c - '0');
c = (char)getchar();
}
if(f) x = -x;
return x;
} void read() {
n = int_get(), m = int_get(); Q = int_get();
for(int i = 1; i <= m; ++ i) {
int u, v, w;
u = int_get(), v = int_get(), w = int_get();
addedge(u, v, w); addedge(v, u, w);
}
} void sov() {
dijkstra(1) ;
while(Q --) {
int a, b;
a = int_get(), b = int_get();
printf("%d\n", dis[a] + dis[b]);
}
} int main() {
//freopen("test.in", "r", stdin);
read(), sov();
return 0;
}
最新文章
- css中左侧固定,右侧自适应
- RPC学习----Thrift快速入门和Java简单示例
- Struts2中重定向和请求转发配置
- Play Framework介绍:控制器层
- LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]
- Python爬取百度贴吧图片
- CSS模块化
- C# 读XML文件
- python的whl文件安装
- Reaver v1.4 用法整理 含高级参数说明 pin必备资料
- javascript 生成UUID
- jQuery中的trigger和triggerhandler区别
- SMT贴片机抛料的成因和回流焊横向温差问题
- 第13章 Swing程序设计----常用面板
- java~spring-ioc的使用
- 小甲鱼零基础python课后题 P22 021函数:lambda表达式
- 基于TensorFlow的深度学习系列教程 1——Hello World!
- DWM1000 蓝点无限 PCB样板
- ACM知识点总结
- ####### Scripts Summary #######