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出发,往其余所有点 ...
随机推荐
- Web前端开发面试题
1. 以下的代码有问题吗?如果有你觉着应该如何修改? for(int i=0; i<list.size(); i++) { ..... ..... if(...) { list.re ...
- jsp-------------之分页技术(一)
jsp分页技术之: 如下图:百度的喵 看上图中卡哇伊的小苗的爪子下面的数字,就是分页啦!那我们如何做出这样一个效果呢? 下面我们来逐一分解: jsp分页技术一 : (算法) /* int pageS ...
- Thread 总结
进程:是一个正在执行的程序 每一个进程执行都有一个执行顺序.该顺序是一个执行路劲,后者叫一个控制单元. 线程:就是进程中的一个独立控制单元. 线程在控制着进程的执行 一个进程中至少有个一个线程 Jav ...
- C# 获取当前星期几三种实现方法(转)
获取当前星期几实现这个功能有多种方法,接下来将列出3种供你参考,感兴趣的你可不要错过了哈,希望本文所提供的知识点对你有所帮助 第一种: string[] Day = new string[] { &q ...
- Android开发--环境配置
1.下载android adt和sdk adt: 新建链接http://dl.google.com/android/ADT-xx.x.x.zip下载adt 注:xx为需要下载adt的版本号,可以在官网 ...
- Collecting Bugs(POJ 2096)
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 3064 Accepted: 1505 ...
- 在 Visual C# 项目中调用 VBA 中的代码
https://msdn.microsoft.com/zh-cn/library/Bb608613.aspx http://www.cnblogs.com/yangbin1005/archive/20 ...
- [转]CentOS更改yum源与更新系统
[1] 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cent ...
- Js笔试题之返回只包含数字类型的数组
如js123ldka78sdasfgr653 => [123,78,653] 一般做法 分析: 1.循环字符串每个字符,是数字的挑出来拼接在一起,不是数字的,就给他空的拼个逗号 2.将新字符串每 ...
- 2.精通前端系列技术之JavaScript模块化开发 seajs(一)
在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完 ...