POJ-3268.SilverCowParty.(最短路 + 图的转置)
本题思路:对原图和原图的逆图分别用一次最短路,找出最大值即可。
一开始是我是对每个顶点spfa搜了一波,结果判题时间巨长,还好这个题的数据量不是很大,所以就用了另一种思路。
参考代码:spfa单结点爆搜版
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std; const int maxn = + , INF = 0x3f3f3f3f;
struct edge {
int to, cost;
};
int n, m, x, ans, dist[maxn];
vector<edge> G[maxn];
bool vis[maxn]; void addedge(int u, int v, int w) {
G[u].push_back({v, w});
} int spfa(int source, int aid) {
memset(vis, false, sizeof vis);
for(int i = ; i <= n; i ++)
dist[i] = (i == source ? : INF);
queue <int> Q;
Q.push(source);
vis[source] = true;
while(!Q.empty()) {
int now = Q.front();
Q.pop();
for(int i = ; i < G[now].size(); i ++) {
edge e = G[now][i];
if(dist[e.to] > dist[now] + e.cost) {
dist[e.to] = dist[now] + e.cost;
if(!vis[e.to]) Q.push(e.to);
}
}
}
return dist[aid];
} int main () {
ans = ;
int u, v, w;
cin >> n >> m >> x;
for(int i = ; i <= m; i ++) {
cin >> u >> v >> w;
addedge(u, v, w);
}
for(int i = ; i <= n; i ++)
ans = max(spfa(i, x) + spfa(x, i), ans);
cout << ans << endl;
return ;
}
对原图和逆图分别进行一次Dijkstra的终极版本
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std; const int maxn = + , INF = 0x3f3f3f3f;
struct edge {
int to, cost;
};
int n, m, x, k, ans, dist1[maxn], dist2[maxn], G[maxn][maxn];;
bool vis[maxn]; void Dijkstra(int lowcost[]) {
for(int i = ; i <= n; i ++)
lowcost[i] = INF;
lowcost[x] = ;
memset(vis, false, sizeof vis);
for(int i = ; i <= n; i ++) {
int minf = INF;
for(int j = ; j <= n; j ++)
if(minf > lowcost[j] && !vis[j]) {
k = j;
minf = lowcost[j];
}
vis[k] = true;
for(int j = ; j <= n; j ++)
if(!vis[j] && lowcost[j] > lowcost[k] + G[k][j])
lowcost[j] = lowcost[k] + G[k][j];
}
} int main () {
ans = ;
int u, v, w;
cin >> n >> m >> x;
for(int i = ; i <= n; i ++)
for(int j = ; j <= n; j ++)
if(i == j) G[i][j] = ;
else G[i][j] = INF;
for(int i = ; i <= m; i ++) {
cin >> u >> v >> w;
G[u][v] = min(G[u][v], w);
}
Dijkstra(dist1);
for(int i = ; i <= n; i ++)
for(int j = ; j < i; j ++)
if(G[i][j]) swap(G[i][j], G[j][i]);
Dijkstra(dist2);
for(int i = ; i <= n; i ++)
ans = max(ans, dist1[i] + dist2[i]);
cout << ans << endl;
return ;
}
POJ-3268.SilverCowParty.(最短路 + 图的转置)的更多相关文章
- POJ 3268——Silver Cow Party——————【最短路、Dijkstra、反向建图】
Silver Cow Party Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbe ...
- DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards
题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...
- POJ 3268 Silver Cow Party (最短路径)
POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...
- POJ 1161 Walls(最短路+枚举)
POJ 1161 Walls(最短路+枚举) 题目背景 题目大意:题意是说有 n个小镇,他们两两之间可能存在一些墙(不是每两个都有),把整个二维平面分成多个区域,当然这些区域都是一些封闭的多边形(除了 ...
- [NOIP2017]逛公园 最短路图 拓扑序DP
---题面--- 题解: 挺好的一道题. 首先我们将所有边反向,跑出n到每个点的最短路,然后f[i][j]表示从i号节点出发,路径长比最短路大j的方案数. 观察到,如果图中出现了0环,那么我们可以通过 ...
- 【NOIP2017】逛公园(最短路图,拓扑排序,计数DP)
题意: 策策同学特别喜欢逛公园. 公园可以看成一张 N 个点 M 条边构成的有向图,且没有自环和重边.其中 1 号点是公园的入口, N 号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花 ...
- [JZOJ5279]香港记者题解--最短路图
[JZOJ5279]香港记者题解--最短路图 题目链接 过 于 暴 力 分析 有一个naiive的想法就是从1到n跑最短路,中途建图,然后在图上按字典序最小走一遍,然而·这是不行的,你这样跳不一定能跳 ...
- Aizu - 1383 Pizza Delivery (最短路图+DAG上的割边)
题意:给出一张有向图,每条边有长度,对于每条边,你要回答将该边的方向取反后,从起点到终点的最短距离是增加or减小or不变. 首先求出起点到所有点的最短距离和所有点到终点的最短距离(两次DIjkstra ...
随机推荐
- while RE Validation
一.简介 为什么需要正则表达式? 文本的复杂处理 正则表达式的优势和用途? 一种强大而灵活的文本处理工具: 大部分编程语言.数据库.文本编辑器.开发环境都支持正则表达式. 正则表达式定义: 正如它的名 ...
- vim粘贴缩进问题
vim不支持直接从其他应用复制内容粘贴过来,而是模拟用户键盘输入来实现的,一般设置vim在换行时自动以上一行的的缩进为初始位置,这样就会导致复制过来的内容出现缩进错乱. set paste 解决粘贴乱 ...
- PythonStudy——数据类型 Type of data
数据类型:信息存在的状态为什么要来描述事物的具体状态:不同的事物需要不同的状态加以描述可以达到描述的最优化 python中有哪些常见的数据类型 1.整型 num = 10000000000000000 ...
- day42-43 绝对定位 相对定位
一.超链接导航栏案例 html结构 <div class="nav"> <ul> <li> <a href=""> ...
- Oauth2.0客户端服务端示例
https://blog.csdn.net/qq_28165595/article/details/80459185 前言前面的理解OAuth2.0认证与客户端授权码模式详解,我们大致了解了Oauth ...
- VS Code 运行 TypeScript 操作指南
总结一下TypeScript开发环境用到的各种工具: Node——通过npm安装TypeScript及大量依赖包.从https://nodejs.org/下载并安装它:如果安装各种包不方便,可以将安装 ...
- SpringBoot Web开发(4) Thymeleaf模板与freemaker
SpringBoot Web开发(4) Thymeleaf模板与freemaker 一.模板引擎 常用得模板引擎有JSP.Velocity.Freemarker.Thymeleaf SpringBoo ...
- 【ELK】之Kibana使用
GET _search { "query": { "match_all": {} } } GET _cat/indices GET elk- GET /elk- ...
- CSS之checkbox&radio&textarea&select
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- qt4 看不到qstring内容
qt4: https://gist.github.com/gregseth/9bcd0112f8492fa7bfe7