随笔分类 -  / 最短路

摘要:P1807 最长路 题目描述 设 G 为有 n 个顶点的带权有向无环图,G 中各顶点的编号为 1n,请设计算法,计算图 G1,n 间的最长路径。 输入格式 输入的第一行有两个整数,分别代表图的点数 n 和边数 m阅读全文
posted @ 2025-03-08 22:38 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> #include<bitset> #include<cstring> using namespace std; const int N=500+5; int n,m,a,b; bitset<N>d[N]; void floyd(){ for(int k=1;k< 阅读全文
posted @ 2025-03-08 16:19 郭轩均 阅读(3) 评论(0) 推荐(0) 编辑
摘要:P2881 [USACO07MAR] Ranking the Cows G 题目描述 Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate, and FJ would like 阅读全文
posted @ 2025-03-08 16:07 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑
摘要:这道题就是一道迪杰斯特拉的板子,没想到的是我想到了重载小于符号,没想到要定义优先队列 #include<iostream> #include<vector> #include<queue> #include<cstring> using namespace std; const int N=1000 阅读全文
posted @ 2025-03-03 21:05 郭轩均 阅读(3) 评论(0) 推荐(0) 编辑
摘要:P1119 灾后重建 题目背景 B 地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄。 题目描述 给出 B 地区的村庄数 N 阅读全文
posted @ 2025-02-20 18:35 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑
摘要:P6464 [传智杯 #2 决赛] 传送门 题目描述 传智专修学院里有 n 栋教学楼,有 m 条双向通行道路连接这些教学楼,不存在重边和自环。每条道路都有一定的长度,而且所有教学楼之间都可以直接或者间接的通过道路到达。我们可以很容易的求出这些教学楼之间的最短路。 为了使交通更为顺畅, 阅读全文
posted @ 2025-02-20 17:32 郭轩均 阅读(3) 评论(0) 推荐(0) 编辑
摘要:P3275 [SCOI2011] 糖果 题目描述 幼儿园里有 N 个小朋友,lxhgww 老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,\(\tex 阅读全文
posted @ 2025-02-19 20:36 郭轩均 阅读(3) 评论(0) 推荐(0) 编辑
摘要:P1993 小 K 的农场 题目描述 小 K 在 MC 里面建立很多很多的农场,总共 n 个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m 个),以下列三种形式描述: 农场 a 比农场 b 至少多种植了 c 个单位的作物; 阅读全文
posted @ 2025-02-19 17:23 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑
摘要:这道题我最开始是想着用dfs的但一看数据量肯定会超时,看了视频才发现可以用spfa,虽然是无权图,但我们可以把边权看作一,我们只需要记录到1的最短距离,如果vc[u][i].dis+w[u]==w[v]那就cnt[v]=(cnt[v]+cnt[u])%100003;如果遇到vc[u][i].dis+ 阅读全文
posted @ 2025-02-19 15:42 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑
摘要:由于题目没有说是连通图,所以最开始时要把所有点加入队列 #include<iostream> #include<queue> #include<vector> using namespace std; struct node { int id; int dis; }; const int N=5*1 阅读全文
posted @ 2025-02-19 14:42 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑
摘要:这道题要用floyd算法,如果a可以战胜b,b可以战胜c,那么a可以战胜c,并且这道题的数据范围很小,首先遍历第i头奶牛可以战胜几头奶牛,然后再统计有几头奶牛可以战胜它,如果加起来等于n-1,说明它与其它所有的奶牛的关系都确定了, #include<iostream> using namespace 阅读全文
posted @ 2025-02-19 14:11 郭轩均 阅读(5) 评论(0) 推荐(0) 编辑
摘要:如果1可以变换到2,2可以变换到3,那么1可以变换到3,这可以用Floyd算法,要注意一点的是,其它数不可以变换到零,而零可以变到其它数, 我的高精度算法一开始是错的,我的做法会导致进位的数也乘了s,在最后要处理carry,但要记得carry/10,不然会成死循环 #include<iostream 阅读全文
posted @ 2025-02-18 22:30 郭轩均 阅读(1) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> using namespace std; int d[120][120]; int w[10020]; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++)cin>>w[i]; for(int i=1;i<= 阅读全文
posted @ 2025-02-18 20:28 郭轩均 阅读(3) 评论(0) 推荐(0) 编辑
摘要:这道题要注意初始化w数组为最大值,并且w[1]=0;有负环的话输出YES,没有输出NO; #include<iostream> #include<queue> #include<vector> using namespace std; const int N=3000+5; struct node{ 阅读全文
posted @ 2025-02-18 20:13 郭轩均 阅读(3) 评论(0) 推荐(0) 编辑
摘要:迪杰斯特拉算法就是每次寻找与与原点最近的点然后更新与它相连的点,要注意的是传入起始点时不需要标记它,因为需要它扩展到其他点,只有当一个点出队时才需要标记它,因为后入队的同一个点可能距离更小 #include<iostream> #include<queue> #include<vector> #de 阅读全文
posted @ 2025-02-18 20:10 郭轩均 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示