【最短路】ACdream 1198 - Transformers' Mission
Problem Description
A group of transformers whose leader is Optimus Prime(擎天柱) were assigned a mission: to destroy all Decepticon's(霸天虎) bases.
The bases are connected by roads. They must visit each base and place a bomb there. They start their mission at a particular base and from there they disseminate to reach each base.
The transformers must use the available roads to travel between bases. Any of them can visit one base after another, but they must all gather at a common base when their task in done because Optimus Prime(擎天柱) doesn't allow his teammate to run into any trouble.
Your job is to determine the minimum time needed to complete the mission.
You may assume that the time required to place a bomb is negligible.
Each transformer can carry unlimited number of bombs and there is an unlimited supply of transformers for this mission.
Input
Input starts with an integer T(T ≤ 50), denoting the number of test cases.
The first line of each case starts with a positive integer n(1 ≤ n ≤ 1000), where n denotes the number of Decepticon's(霸天虎) bases.
The next line contains a positive integer m(0 ≤ m ≤ 100000), where m is the number of roads connecting two bases.
Each of the next m lines contain two distinct numbers u, v, w(0 ≤ u, v, w < n, u != v), this means there is a road from base u to base v which costs w units of time. The bases are numbered from 0 to n-1.
The last line of each case contains two integers s, e(0 ≤ s, e < n).
Where s denotes the base from where the mission starts and e denotes the base where they must meet.
You may assume that two bases will be directly connected by at most one road.
The input will be given such that, it will be possible to go from any base to another by using one or more roads.
Output
Sample Input
2
5 6
0 1 2
1 2 2
3 1 2
4 0 3
3 2 3
3 4 1
4 3
5 5
1 0 1
1 2 3
1 3 3
4 2 2
3 4 1
4 2
Sample Output
Case #1: 7
Case #2: 9 【题意】简单说就是派好几个人去炸n个地方,问至少需要花多长时间。
【分析】任取一点分别求到起点和重点的最短路,所得之和就是炸这个地方时所需要花费的最少时间,然后取n个地方花费时间的最大值即可;
【技巧】两次BFS求最短路;
【代码】
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = ;
vector<int> G[maxn];
int Map[maxn][maxn], d1[maxn], d2[maxn], vis[maxn];
int m, n;
void BFS(int s, int* d)
{
memset(d, -, sizeof(d));
memset(vis, , sizeof(vis)); int u = s;
d[u] = ; vis[u] = ;
queue<int> q;
q.push(u);
while(!q.empty())
{ int v = q.front(); q.pop();
//cout << "v: " << v << endl;
int sz = G[v].size();
for(int i = ; i < sz; i++)
{
int w = G[v][i];
//cout << "w: " << w << endl;
if(!vis[w])
{
vis[w] = ;
d[w] = d[v]+Map[v][w];
q.push(w);
}
else
{
if(d[v]+Map[v][w] < d[w])
{
d[w] = d[v]+Map[v][w];
q.push(w);
}
}
} }
} int main()
{
int T; scanf("%d", &T);
for(int kase = ; kase <= T; kase++)
{
memset(Map, , sizeof(Map));
for(int i = ; i < n; i++) G[i].clear();
scanf("%d%d", &n, &m);
while(m--)
{
int u, v, t;
scanf("%d%d%d", &u, &v, &t);
Map[u][v] = Map[v][u] = t;
G[u].push_back(v); G[v].push_back(u);
}
int st, en; scanf("%d%d", &st, &en);
BFS(st, d1);
BFS(en, d2);
int ans = ;
for(int i = ; i < n; i++)
ans = max(ans, d1[i]+d2[i]);
printf("Case #%d: %d\n", kase, ans);
// for(int i = 0; i < n; i++) printf("%d ", d2[i]);
// printf("\n");
}
return ;
}
【最短路】ACdream 1198 - Transformers' Mission的更多相关文章
- ACDream-C - Transformers' Mission(Dijastra最短路径)
dijstra求最短路径:经典应用题目: 题意:给你一个带权值无向图,权值是A点到B点的时间,然后告诉你起点,一个人可以去炸掉一个结点或多个节点,也可以派多个人,最终这些人在终点集合,问最后一个到达终 ...
- 【POJ】2449 Remmarguts' Date(k短路)
http://poj.org/problem?id=2449 不会.. 百度学习.. 恩. k短路不难理解的. 结合了a_star的思想.每动一次进行一次估价,然后找最小的(此时的最短路)然后累计到k ...
- poj 2449 Remmarguts' Date K短路+A*
题目链接:http://poj.org/problem?id=2449 "Good man never makes girls wait or breaks an appointment!& ...
- poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
http://poj.org/problem?id=2449 Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Subm ...
- 图论(A*算法,K短路) :POJ 2449 Remmarguts' Date
Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 25216 Accepted: 6882 ...
- poj 2449 Remmarguts' Date 第k短路 (最短路变形)
Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 33606 Accepted: 9116 ...
- (最短路 Floyd) P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷
题意翻译 题目描述 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛. 一张藏宝图上说,如果他的路程上经过的小岛依次出现了 ...
- Remmarguts' Date POJ - 2449 (A*搜索|k短路)
"Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...
- POJ 2449 - Remmarguts' Date - [第k短路模板题][优先队列BFS]
题目链接:http://poj.org/problem?id=2449 Time Limit: 4000MS Memory Limit: 65536K Description "Good m ...
随机推荐
- iOS事件机制(二)
从上一篇的内容我们知道,在iOS中一个事件用一个UIEvent对象表示,UITouch用来表示一次对屏幕的操作动作,由多个UITouch对象构成了一个UIEvent对象.另外,UIResponder是 ...
- vs2010生成Dll文件并引用dll(C#)
1.创建新C#控制台应用程序,项目命名createBll,打开Program.cs重命名为TestA(可以不重命名)并修改代码,如图: 写好后,可以写其它的类.cs文件 2.完成后,点击菜单栏的“项目 ...
- VMware搭建12.0搭建Mac OS10.11详细过程
1.软件准备 1.1VMware12.0 1.2VMware增强包 1.3Mac OS10.11 cdr(相当于dmg) 1.4securable.exe 2.软件破解 2.1VMware输入序列号破 ...
- C#学习笔记(十四):GC机制和弱引用
垃圾回收(GC) 垃圾回收即Garbage Collector,垃圾指的是内存中已经不会再使用的对象,通过收集释放掉这些对象占用的内存. GC以应用程序的root为基础,遍历应用程序在Heap上动态分 ...
- Mysql中关于 group_concat函数详解
group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Sepa ...
- 教你50招提升ASP.NET性能(二十六):对于开发人员的数据库性能技巧
Database Performance Tips for Developers对于开发人员的数据库性能技巧 As a developer you may or may not need to go ...
- Android学习笔记(3)
今天我试着往应用里添加广告,结果adView一操作就闪退,换了很多种方法都不行. 最后解决过程有点坑爹,原来是还没setcontentview就开始adview了,哈哈 虽然我现在菜得不行,还没入门. ...
- VS2015创建的Asp.net WebApi默认项目在CentOS7+Mono4.2.2+jexus5.8运行不起来的解决方案
主要原因是Web.config配置的问题. 修改成如下内容: <?xml version="1.0" encoding="utf-8"?> < ...
- codeforces Gym 100500 J. Bye Bye Russia
Problem J. Bye Bye RussiaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1005 ...
- C#中使用UDP通信
UDP通信是无连接通信,客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据. 服务器端代码: static void Main(string[] ...