
图论 最短路
Lqingyyyy
这个作者很懒,什么都没留下…
展开
-
51nod 1706 最短路 + 思维
首先考虑到 会有边重合, 我们思考 如果有边重合 那一定会出现一个起始点 起始点 就是 重合的那个点 那么只需要 将到达点设为 三点的终点 就没有边重合了 51nod的数据较大 需要用deque 优化 bfs#include<iostream>#include<queue>#include<cstring>#define x first#define y secondusing namespace std;typedef long long ll;.原创 2021-09-05 22:27:48 · 127 阅读 · 0 评论 -
51nod2884
水题 阿 就是先求出 最短路树 然后 从树的底端开始删点就好了#include<iostream>#include<queue>#include<utility>#include<cstring>#include<algorithm>#include<vector>#define x first#define y secondusing namespace std;const int N = 3e5 + 10,.原创 2021-06-24 10:52:53 · 164 阅读 · 0 评论 -
P1841 [JSOI2007]重要的城市
题意是 x 到 y的最短路 如果 他们的路中去掉 一个点 使得 最短路 变大 那么 这个点就是一个重要点 求出所有重要点 。这个题很简单 只要floyd 跑 经过这个点是否是所有最短路的和 即可#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 210;int flag[N];int dist[N][N],num[N][N];int原创 2021-05-28 12:59:08 · 119 阅读 · 0 评论 -
AtCoder Beginner Contest 197(Sponsored by Panasonic) F - Construct a Palindrome 最短路
大体思路就是 给你 n个点 m条边 每个边上有个字符C 询问 从点1 到 点 n 一条路径字符按顺序组成的回文最短路 首先可以想到 双向bfs 因为回文一定是 字符相同 此时我们只需要点1和点n 同时跑最短路就可以了 数据因为是 1000 所以25 * 1000 * 1000 够了有两个判断是否为回文的 形态 一种是两条边走到了一个点 另一种是 两条边走到了两个点 但是相邻只有一个点 只需要特判就行#include<iostream>#include<cstring>#inc原创 2021-05-20 10:53:00 · 206 阅读 · 0 评论 -
洛谷P1261
题目定义B(u)为关于点u的兴趣值 给出每个点一个rank值 如果 点 u 对 v感兴趣 则不存在一个点 k使得rank(k) > rank(v) 且 dist(u,k) < dist(u,v);首先最简单的思想就是 n遍最短路找每个点 rank为1…10 ~ 10的最短路dist[n][11] 然后再走每个点的最短路 dis[j] 倘若点 i 对点 j感兴趣 那么 dis[j] < dist[j][a[i] + 1] 则ans++首先 第一步那么我们就以rank为起点 跑10遍原创 2021-05-04 19:13:00 · 134 阅读 · 0 评论