加载中...

摘要: https://www.acwing.com/problem/content/description/1497/ 思路: 一般这种题型的dijk,我们都可以在dijk中判断出来几个关键字,但这题却不行,因为我们无法确定在哪种情况下更好。所以我们先用一遍dijk来剪枝,找出所有到终点的最短路,然后用d 阅读全文
posted @ 2022-08-21 22:39 英雄不问出处c 阅读(42) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/1634/ 思路: 枚举,但要注意一些细节。 #include <iostream> #include <cstring> #include <unordered_map> #include <vector> #inclu 阅读全文
posted @ 2022-08-21 20:56 英雄不问出处c 阅读(24) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/description/1626/ 思路: 既然用一般的建图方式不好处理这个问题,那就把他每条路线的每个站点之间两两练一条边,其实也符合正常的建图规则。还有要注意的就是info的存储,其实也可以和pre类比。 #inclu 阅读全文
posted @ 2022-08-21 20:44 英雄不问出处c 阅读(93) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/1621/ //欧拉图:连通 && 所有点的度数为偶 //半欧拉图:连通 && 只有2个点的度数为奇 其余度数为偶 //非欧拉图:else #include<iostream> #include<algorithm> #i 阅读全文
posted @ 2022-08-21 20:25 英雄不问出处c 阅读(28) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/description/1617/ 思路: 需要满足:1. 第一个点和最后一个点相同,这样才能形成回路。 2.要有恰好有n+1个点,因为哈密顿回路本身就要求经过图中每个顶点。 3. 且每个顶点都必须遍历到。 4. 每两个点 阅读全文
posted @ 2022-08-21 20:21 英雄不问出处c 阅读(222) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/description/1603/ 思路: 常见的最短路题型,只不过这题要做两次dijk。 #include<bits/stdc++.h> using namespace std; const int N = 550; i 阅读全文
posted @ 2022-08-21 20:10 英雄不问出处c 阅读(39) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/1579/ 思路: 最短路里面的经典题型,在最短路的时候维护多个变量。 #include<bits/stdc++.h> #include<unordered_map> using namespace std; const 阅读全文
posted @ 2022-08-21 20:04 英雄不问出处c 阅读(151) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/1520/ 思路: 先找到在一个团伙中的人(可以用树的dfs来做,也可以用并查集来做),然后遍历每一个合法的集合,找到里面的头目。 并查集的做法 #include <iostream> #include <unordere 阅读全文
posted @ 2022-08-21 19:52 英雄不问出处c 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 写的时候思路想到了,但是不怎么会维护。 这儿贴一个比较好理解的维护方式,用的双端队列。 #include<bits/stdc++.h> using namespace std; #define int long long #pragma GCC optimize(3) typedef pair<in 阅读全文
posted @ 2022-08-21 14:56 英雄不问出处c 阅读(44) 评论(0) 推荐(0) 编辑