ACDream-C - Transformers' Mission(Dijastra最短路径)
dijstra求最短路径:经典应用题目:
题意:给你一个带权值无向图,权值是A点到B点的时间,然后告诉你起点,一个人可以去炸掉一个结点或多个节点,也可以派多个人,最终这些人在终点集合,问最后一个到达终点的人到达的时间;
分析:最短路中的最大值;数据不大,暴力枚举;
#include <bits/stdc++.h>
#define mem(a, val) memset((a), (val), sizeof a)
#define all(a) (a).begin(), (a).end()
#define pb push_back
#define mp make_pair
#define fir first
#define sec second
#define repu(i,a,b) for(int i=a;i<b;i++)
using namespace std;
typedef pair<int, int> pii;
typedef long long LL;
typedef unsigned long long LLU;
const int maxn=;
const int INF=0x3f3f3f3f;
struct Edge
{
int u, v, d;
Edge(int u, int v, int d):u(u), v(v), d(d) {}
};
struct qnode
{
int u, d;
qnode(int u, int d):u(u), d(d) {}
bool operator < (const qnode a)const
{
return d>a.d;
}
}; struct Dijkstra
{
int n;
vector<int> G[maxn];
vector<Edge> edge;
int d[maxn];
bool vis[maxn];
void init(int n)
{
this->n=n;
for(int i=; i<=n; i++)
{
G[i].clear();
vis[i]=;
d[i]=INF;
}
edge.clear();
}
void AddEdge(int u, int v, int d)
{
G[u].push_back(edge.size());
edge.push_back(Edge(u, v, d));
}
void dijkstra(int s)
{
priority_queue<qnode> q;
d[s]=;
q.push(qnode(s, ));
while(!q.empty())
{
qnode x=q.top();
q.pop(); if(vis[x.u])continue ;
vis[x.u]=true;
for(int i=; i<G[x.u].size(); i++)
{
Edge& e=edge[G[x.u][i]];
if(d[e.v]>d[x.u]+e.d)
{
d[e.v]=d[x.u]+e.d;
q.push(qnode(e.v, d[e.v]));
}
}
}
}
} dij1, dij2;
int main()
{
int T, n, m, kase=;
scanf("%d", &T);
while(T--)
{
scanf("%d%d", &n, &m);
dij1.init(n);///初始化不可缺
dij2.init(n);
repu(i,,m)
{
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
dij1.AddEdge(u, v, w);///2条边,4个队列
dij1.AddEdge(v, u, w);
dij2.AddEdge(u, v, w);
dij2.AddEdge(v, u, w);
}
int st,ed;
scanf("%d%d",&st,&ed);
dij1.dijkstra(st);///计算从st到每个顶点的最短距离
dij2.dijkstra(ed);///计算从ed到每个顶点的最短距离
int ans = ;
repu(i,,n)
{
ans = max(ans,dij1.d[i]+dij2.d[i]);
///从st到i的距离+从ed到i的最短距离,即从st到ed的最短距离
///循环保证经过每一个点
}
printf("%d\n",ans);
}
return ;
}
ACDream-C - Transformers' Mission(Dijastra最短路径)的更多相关文章
- 【最短路】ACdream 1198 - Transformers' Mission
Problem Description A group of transformers whose leader is Optimus Prime(擎天柱) were assigned a missi ...
- 论文解读(Graphormer)《Do Transformers Really Perform Bad for Graph Representation?》
论文信息 论文标题:Do Transformers Really Perform Bad for Graph Representation?论文作者:Chengxuan Ying, Tianle Ca ...
- Johnson 全源最短路径算法
解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ...
- Floyd-Warshall 全源最短路径算法
Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...
- Dijkstra 单源最短路径算法
Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...
- Bellman-Ford 单源最短路径算法
Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 Richard Bellman 和 Leste ...
- Java 性能分析工具 , 第 3 部分: Java Mission Control
引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...
- 最短路径算法-Dijkstra
Dijkstra是解决单源最短路径的一般方法,属于一种贪婪算法. 所谓单源最短路径是指在一个赋权有向图中,从某一点出发,到另一点的最短路径. 以python代码为例,实现Dijkstra算法 1.数据 ...
- bzoj 4016: [FJOI2014]最短路径树问题
bzoj4016 最短路路径问题 Time Limit: 5 Sec Memory Limit: 512 MB Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点 ...
随机推荐
- C#压缩加密和vb压缩加密
string[] FileProperties = new string[2]; FileProperties[0] = "C:\\a\\";//待压缩文件目录 FilePrope ...
- 开发完iOS应用,接下去你该做的事
iOS专项总结 关于 analyze Clang 静态分析器 Slender Faux Pas Warning Leaks Time Profiler 加载时间 iOS App启动过程 帧率等 如何优 ...
- Python环境的安装
参考官方文档 http://www.runoob.com/python/python-install.html Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上). 您需要下载适用 ...
- Java三大特征之------多态
1.定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式. 2.存在条件 2.1存在父子关系 2.2子类中存在重写方法 2.3父类类型的变量指向子类对象 ...
- MySQL索引实现
摘自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现 ...
- 字符串转化为json方法
1.function strToJson(str){ var json = eval('(' + str + ')'); return json; } 不过eval解析json有安全隐患! 现在大多数 ...
- getParamValues()
http://blog.csdn.net/msg_java2011/article/details/6529226
- SQL语句的用法
1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNc ...
- ionic build --release android
ionic bulid android ionic build --release android keytool -genkey -v -keystore demo.keystore -alias ...
- Convert.ToInt16 与 Convert.ToInt32 区别
取值的范围不同: int16:-32768 到 32767 int32:-2,147,483,648 到 2,147,483,647