AcWing 4243. 传递信息(单源最短路)
题目连接
https://www.acwing.com/problem/content/description/4246/
http://poj.org/problem?id=1502
思路
没啥好说的就是一个裸的求单源最短路,只不过边的信息建立需要自己判断是否存在,范围在100以内,那么基本上所有的最短路都能过,我这里就给出迪杰斯特拉和Floyd的代码
代码
迪杰斯特拉
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define PII pair<int,int>
const int INF = 0x3f3f3f3f;
const int N = 1e2+10;int n,dis[N];
bool vis[N];struct Node{int v,w;
};
vector<Node> E[N];int toint(string s){int res = 0;for(int i = 0,l = s.size();i < l; ++i) res = res * 10 + s[i] - '0';return res;
}void DJ(int s){for(int i = 1;i <= n; ++i) dis[i] = INF;priority_queue<PII,vector<PII>,greater<PII> > que;que.push({0,s});dis[s] = 0;while(!que.empty()){int t = que.top().second;que.pop();if(vis[t]) continue;vis[t] = true;for(int i = 0,l = E[t].size();i < l; ++i) {int j = E[t][i].v;int w = E[t][i].w;if(dis[j] > dis[t] + w){dis[j] = dis[t] + w;que.push({dis[j],j});}}}
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;string num;for(int i = 2;i <= n; ++i)for(int j = 1;j < i; ++j){cin>>num;if(num != "x"){int w = toint(num);E[i].push_back({j,w});E[j].push_back({i,w});}}DJ(1);int ans = 0;for(int i = 1;i <= n; ++i) ans = max(ans,dis[i]);cout<<ans<<endl;return 0;
}
Floyd
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define PII pair<int,int>
const int INF = 0x3f3f3f3f;
const int N = 1e2+10;int n,f[N][N];int toint(string s){int res = 0;for(int i = 0,l = s.size();i < l; ++i) res = res * 10 + s[i] - '0';return res;
}void Floyd(){for(int k = 1;k <= n; ++k) for(int i = 1;i <= n; ++i) for(int j = 1;j <= n; ++j)f[i][j] = min(f[i][k] + f[k][j],f[i][j]);
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i = 1;i <= n; ++i)for(int j = 1;j <= n; ++j)f[i][j] = i==j?0:INF;string num;for(int i = 2;i <= n; ++i)for(int j = 1;j < i; ++j){cin>>num;if(num != "x")f[i][j] = f[j][i] = min(f[i][j],toint(num));}Floyd();int ans = 0;for(int i = 1;i <= n; ++i) ans = max(ans,f[1][i]);cout<<ans<<endl;return 0;
}
AcWing 4243. 传递信息(单源最短路)相关推荐
- 算法提高课-图论-差分约束- AcWing 1169. 糖果:spfa求单源最短路、差分约束
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 差分约束系统 差分约束系统是一种特殊的N元一次不等式组.它包含N个变量X1,...,XnX_1,...,X_nX1,...,Xn ...
- 算法提高课-图论-单源最短路的综合应用-AcWing 1135. 新年好:dijkstra和dfs暴搜结合
题目分析 来源:acwing 分析: 先预处理出从1,a,b,c,d,e出发到其他所有点的单源最短路.存在二维数组dist[6][N]中 dfs暴搜所有拜访顺序,共有5!种,对于每一种拜访顺序,可以通 ...
- 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
题目分析 来源:acwing 分析: 本题难在抽象建图上,这里采用的建图方式是:同一条公交线路上,前面的站点都可以连一条有向边到其后面的站点,且边权都为1. 由于边权都是1,可以用bfs来求最短路. ...
- acwing单源最短路的建图模式总结
.根据边权的范围以及问题求解的需要,最短路问题可以分为以下 4 种情形,分别用不同的算法求解. • 单源最短路径(固定一个顶点为原点,求源点到其他每个顶点 的最短路径) • 1. 边权非负:Dijks ...
- CSP认证201609-4 交通规划[C++题解]:最短路径树、dijkstra求单源最短路、递推思想
题目分析 来源:acwing 分析: 这题是最短路树.保持原图中所有点到根结点的最短距离不变,然后在原图中选择一些边,使所有点连通的最短路是多长. 最短路径树,是一种使用最短路径算法生成的数据结构树. ...
- PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...
- 单源最短路 Dijkstra算法 和 SPFA算法
单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...
- 系兄弟就来砍我 有向图单源最短路
系兄弟就来砍我 时间限制: 1 Sec 内存限制: 128 MB 题目描述 渣渣灰因为一句"大家好,我系渣渣辉,系兄弟就来砍我"引得众粉丝纷纷拿两米长的大刀寻找. 现有n个据点, ...
- 模板:Prime最小生成树堆优化 + Dijkstra单源最短路堆优化
Dijkstra 单源最短路堆优化 #include<bits/stdc++.h> using namespace std; typedef pair<int, int> PI ...
最新文章
- jiebaR中文分词,从入门到喜欢
- 用PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得700+星
- qt初学者 第一个小程序 小界面
- 表格行内编辑增删改查
- mysql查询新建查询报错_mysql开启慢查询报错:
- PHP十六个魔术方法
- phpcms 增加备案号、联系方式等字段
- 全面分析RHCE7(红帽认证工程师)考试题目之 ----NFS文件共享 篇
- NOIP 2014 解方程
- Bootstrap模态框如何垂直居中?
- mplab java失败_Microchip工程师社区 - MPLABX用PICC编译失败 - Microchip C语言编译器论坛 - 麦田论坛...
- tar -xf_【图】兼具优雅与运动 抢先实拍改款捷豹XF
- minic 词法单元建立
- 编程语言常见符号集合分享,赶快收藏
- 手机计算机如何用科学计算法,手机计算器开根号怎么按(万能科学计算器在线使用方法)...
- 7-11 电话聊天狂人 (25分)
- 最新机器人视觉系统介绍,给机器人装上“眼睛”
- 星起航:抖音小店线上货源渠道
- 那些会休息的人是如何度过假期的?
- 意外发现:安装搜狗输入法9.8正式版,没出现任何广告弹窗