using namespace std; const int maxn = 1000005; vector<int>e[maxn]; int n,m; int vis[maxn]; int d[maxn]; void bfs() { queue<int>q; vis[n]=1; d[n]=0; q.push(n); while (!q.empty()) { int u = q.front(); q.pop(); for (int i = 0;i<e[u].size();i++)...
思路(来自codeforces题解): 从1×2 的躺椅联想到黑白染色, 若将躺椅的移动看成空格的移动, 不难发现每次都是黑格移到黑格, 白格移到白格, 最后我们放置躺椅的位置也是一黑一白的。 我们可以证明, 在最佳情况下, 每个躺椅的移动不超过一次, 我有一个感性的理解, 每次移动要么从黑格移到黑格, 要么从白格移...
#include<bits/stdc++.h> using namespace std; const int maxn = 3005; #define INF 1e9 vector<int>e[maxn]; int vis[maxn]; int d[maxn][maxn]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i = 0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); e[u].push...
Codeforces 1163F 最短路 + 线段树 (删边最短路) 题意:给你一张无向图,有若干次操作,每次操作会修改一条边的边权,每次修改后输出1到n的最短路。修改相互独立。 思路:我们先以起点和终点为根,找出最短路径树,现在有两种情况: 1:修改的边不是1到n的最短路上的边,那么可能出现的情况就是这条边的权值变得...
CodeForces 1307D BFS最短路 思维 原题链接 题意 给出一个简单无向图,边权全部为1,同时给我们k个特殊点,要求我们从这k个特殊点中选出两个来连一条边权为1的边。同时,我们的决策要保证1~n的最短路程最大,求最终这个最短路长度。 思路 首先因为边权都为1,所以我们可以BFS来求出最短路。而且可以顺带求出...
Codeforces Round #792 (Div. 1 + Div. 2) D(贪心) E(贪心) 严格鸽 Codeforces Round 979 (Div. 2) A - E kkcdd Codeforces Round 937 (Div. 4) A - G Snow打开知乎App 在「我的页」右上角打开扫一扫 其他扫码方式:微信 下载知乎App 开通机构号 无障碍模式 验证码登录 密码登录 中国+86 获取短...
Codeforces 1272 A-E 2019-12-13 16:55 − # Codeforces 1272 A-E ## A [Three Friends](http://codeforces.com/contest/1272/problem/A) 直接枚举所有情况,共$3\times 3\times 3=27$种。 ### code ```c++ #include #... xyq0220 0 361 codeforces 1269 E K Integers 2019-12-24 ...
https://codeforces.com/problemset/problem/1650/G 题意:给出一个 n 个顶点 m 条边的无向无权图,顶点编号为1到 n。给出源点s, 终点t, 求 s 到 t 的最短路和次短路总共有多少条。 思路: 本题是上题的扩展版。首先我们要搞清楚顶点v的次短路是怎么来的。设 u->v 是该无向图拓扑排序后形成的DAG...
Codeforces 1281E 2019-12-20 11:25 −Link 题意:一棵$2n$个点的树让你分配$n$对居民在点上求每对居民之间路径和的最小值和最大值 思路:考虑一条边$(u, v)$ 1.若要使答案尽可能大,那么这条边应该取到尽可能多次。显然,如果$u, v$的子树大小分别表示成$sz_u, sz_v$,那么这条边最多被覆盖$...
// Codeforces - Codeforces Round 918 (Div. 4) G. Bicycles // https://codeforces.com/contest/1915/problem/G 2024-03-07 20:09:09 #include <bits/stdc++.h> using namespace std; #define all(a) begin(a), end(a) #define int long long using pii = pair<int, int>; using ijk = tup...