图论
今天也吃瓜
空空
展开
-
拓扑排序:[USACO20FEB]Timeline G
题目链接:点击这里#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include<algorithm>typedef long long ll;typedef long double ld;using namespace std;const int maxn=1e5+5;const int maxm=2e5+5;ll in[maxn],hea原创 2021-03-07 00:38:21 · 251 阅读 · 0 评论 -
拓扑排序:绿豆蛙的归宿
题目链接:点击这里#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include<algorithm>typedef long long ll;typedef long double ld;using namespace std;const int maxn=1e5+5;const int maxm=2e5+5;ll in[maxn],hea原创 2021-03-06 23:56:38 · 84 阅读 · 0 评论 -
拓扑排序:最大食物链计数
题目来自:点击这里#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include<algorithm>using namespace std;const int maxn=5005;const int maxm=500005;const int mod=80112002;int in[maxn],head[maxn],num=0,ans=0,o原创 2021-03-06 00:02:17 · 119 阅读 · 0 评论 -
2020.9CSP 点亮数字人生
题目链接:点击这里#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>using namespace std;char s[30];int (*ans[10005])(int , int);int st[10005];int NOT(int x, int y){return !y;}int AND(int x,原创 2020-12-17 17:47:21 · 234 阅读 · 0 评论 -
图论:spfa求同余最短路
题目来自:点击这里#include<cstring>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const ll inf = 0x3f3f3f3f;struct edge{ ll to,w,next;}kkk[1000050*2];ll head[10原创 2020-11-05 16:40:56 · 69 阅读 · 0 评论 -
图论:最小割
题目来自:点击这里#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>const int maxm=2000100;const int maxd=2000100;const int inf=0x7ffffff;using namespace std;int n;int原创 2020-11-03 22:07:00 · 192 阅读 · 0 评论 -
spfa最长路差分约束
题目链接:点击这里#include<cstring>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>using namespace std;inline int read(){ int a=0;char x=getchar(); while(x<'0'||x>'9')x=getchar(); while(x>原创 2020-11-02 20:14:59 · 114 阅读 · 0 评论 -
图论:差分约束
题目链接:点击这里#include<cstring>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>using namespace std;struct edge{ int to,w,next;}kkk[100005];int head[50005],neg[50005],dis[50005],vis[50005],numedge,n,m;原创 2020-11-01 18:44:59 · 87 阅读 · 0 评论 -
差分约束
题目链接:点击这里#include<cstring>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>using namespace std;struct edge{ int to,w,next;}kkk[10005];int head[5005],neg[5005],dis[5005],vis[5005],numedge,n,m;void原创 2020-11-01 18:19:21 · 47 阅读 · 0 评论 -
图论:KM算法求解二分图最大权完美匹配
#include<iostream>//二分图最大权匹配 #include<cstdio>#include<algorithm>#define N 505#define M 250005#define INF 9990365505#define ll long longusing namespace std;int n,m,x,y,z,tot,tim,l,r,q[N],fr[N],nxt[M],d1[M],d2[M];int pre[N],visx[N]原创 2020-11-01 14:46:06 · 199 阅读 · 0 评论 -
图论:差分约束算法
题目链接:点击这里代码如下:#include<cstring>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>using namespace std;struct edge{ int to,w,next;}kkk[10005];//存边用int head[5005],neg[5005],dis[5005],vis[5005],numedg原创 2020-11-01 11:51:04 · 102 阅读 · 0 评论 -
tarjan算法求解2-SAT问题
题目链接:点击这里代码如下:#include <cstdio>#include <cstring>#include <vector>#include<iostream>#include <algorithm>#define maxd 2020using namespace std;int n,m,tot=0;//n个点,m条边 struct node{ int to,next;}edge[500050];int nume.原创 2020-10-31 21:07:54 · 182 阅读 · 0 评论 -
去掉每个点以后的连通分支数
题目链接:点击这里输入样例:4 21 21 3输出样例:3 2 2 1代码如下#include <cstdio>#include <cstring>#include <vector>#include<iostream>#include <algorithm>#define maxd 300000+5using namespace std;int low[maxd],num[maxd],dfn=0,tot=0;b原创 2020-10-25 18:45:52 · 260 阅读 · 0 评论 -
PTA肿瘤诊断
输入样例:3 4 5 21 1 1 11 1 1 11 1 1 10 0 1 10 0 1 10 0 1 11 0 1 10 1 0 00 0 0 01 0 1 10 0 0 00 0 0 00 0 0 10 0 0 11 0 0 0输出样例:26代码如下:#include<cstdio>#include<iostream>#include<queue>#include<algorithm>#include.原创 2020-09-05 21:40:06 · 525 阅读 · 0 评论 -
图论:floyd变形
很有意思的一道题:点击这里#include<cstdio>#include<stack>#include<iostream>#include<queue>#include<algorithm>#include<iterator>#include<set>//floyd 多源最短路径 #include<string>#include<cstring> #include<map&原创 2020-06-28 16:47:15 · 114 阅读 · 0 评论 -
图论:多对单最短路径
在求解最短路时,单对多最短路径,多对多都已经有现成的算法,那么怎么求多对单?很简单,只需要反向建图再用spfa,ford,dijkstra等算法即可,下面例题正好就是单对多和多对单的应用。题目链接:点击这里#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<string>#include<queue>#define原创 2020-06-15 10:11:25 · 173 阅读 · 0 评论 -
图论:最小费用最大流
题目链接:点击这里#include <cstdio>#include <cstring>#include <vector>#include<queue>#include<iostream>#include <algorithm>#define maxd 10000+5#define maxm 100000+5const int inf=0x7ffffff;using namespace std;int n,m,s,原创 2020-06-14 16:58:34 · 178 阅读 · 0 评论 -
AHOI2009 最小割
#include <cstdio>#include <cstring>//dinic弧优化+tarjan#include <vector>#include<queue>#include<iostream>#include <algorithm>#define maxd 5000+5#define maxm 70000+5const int inf=0x7ffffff;using namespace std;int n原创 2020-06-13 10:40:38 · 105 阅读 · 0 评论 -
二分图匹配:匈牙利算法
例题:点击这里#include <cstdio>#include <cstring>//二分图匹配可以理解为有n个女孩,m个男孩//每个女孩喜欢0~m个男孩,每个男孩喜欢0~n个女孩#include <vector>//求一种配对方式使得情侣的对数最多#include<queue>#include<iostream>#include <algorithm>using namespace std;const long l原创 2020-06-12 15:23:27 · 123 阅读 · 0 评论 -
图论:SPFA算法
例题:点击这里#include <cstdio>#include <cstring>#include <vector>#include<queue>#include<iostream>#include <algorithm>using namespace std;const long long inf=2147483647;#define maxd 10000+5#define maxm 500000+5struc原创 2020-06-12 10:23:44 · 124 阅读 · 0 评论 -
网络最大流:dinic算法
改日再详写算法例题:点击这里#include <cstdio>#include <cstring>//建议使用ISAP算法#include <vector>#include<queue>#include<iostream>#include <algorithm>#define maxd 10000+5#define maxm 100000+5const int inf=0x7ffffff;using namespa原创 2020-06-11 16:40:07 · 144 阅读 · 1 评论 -
强连通分量:tarjan
题目来自:点击这里#include <cstdio>#include <cstring>#include <vector>#include<iostream>#include <algorithm>#define maxd 50000+5using namespace std;int n,m,tot=0;//n个点,m条边 struct node{ int to,next;}edge[maxd];int head[maxd]原创 2020-06-10 10:36:33 · 118 阅读 · 0 评论 -
图论:割点
题目来自:添加链接描述#include <cstdio>#include <cstring>#include <vector>#include<iostream>#include <algorithm>#define maxd 20000+5using namespace std;int low[maxd],num[maxd],dfn=0,tot=0;bool iscut[maxd];vector<int>G[max原创 2020-06-10 09:21:05 · 146 阅读 · 0 评论 -
图论:非严格次小生成树
参考博客:这位大佬写的很详细#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 1000 + 10, maxe = 1000 * 1000 / 2 + 5, INF = 0x3f3f3f3f;int n, m;//n个点,m条边 int head[maxn];//并查集用 int原创 2020-12-05 19:11:32 · 122 阅读 · 0 评论 -
图论:dijkstra+优先队列
题目来源:点击这里#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<string>#include<queue>using namespace std;struct edge{ int to,next,w;}kkk[200005];int head[100005],dis[100005],cnt=0;boo原创 2020-05-28 09:39:53 · 151 阅读 · 0 评论 -
图论:dijstra
题目来自:点击这里代码如下:#include<cstdio>#include<iostream>#include<cstring>using namespace std;int a[205][205],n;int dis[205],use[205];int main(){ cin>>n; for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){原创 2020-05-23 09:44:23 · 80 阅读 · 0 评论 -
图论:floyd模板
题目来自:点击这里代码如下:#include<cstdio>#include<iostream>#include<cstring>using namespace std;int a[105][105];int f[10000+5];int n,m,u,v,w;long long ans=0;int main(){ cin>>n>>m; for(int i=0;i<m;i++){ scanf("%d原创 2020-05-22 08:42:23 · 126 阅读 · 0 评论 -
图论:floyd最小环
题目:点击这里#include<cstdio>#include<iostream>#include<cstring>using namespace std;int a[105][105];int mp[105][105];int n,m,u,v,w,ans=1e8;int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++原创 2020-05-22 09:42:37 · 121 阅读 · 0 评论 -
图论:单源最短路径(dijstra模板)
题目来自:点击这里#include <cstdio>#include <iostream>#include<cstring>#include<queue>#include<algorithm>using namespace std;const int inf=2147483647;int pa,pb,pc; struct node{ int from; int to; int length;}kkk[5*100000+5]原创 2020-05-18 10:14:22 · 128 阅读 · 0 评论 -
图论:07-图6 旅游规划 (Dijstra算法)
题目如下:有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度原创 2020-05-16 21:31:27 · 526 阅读 · 0 评论 -
图:Saving James Bond - Hard Version(BFS的应用)
This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he原创 2020-05-13 16:57:50 · 97 阅读 · 0 评论 -
图:列出连通集(DFS和BFS)
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1 v2 … vk }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例:8 60 70 12 04 12原创 2020-05-13 09:36:57 · 1142 阅读 · 0 评论 -
图:Saving James Bond - Easy Version(DFS的应用)
This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he原创 2020-05-13 09:16:03 · 87 阅读 · 0 评论 -
图:六度空间
题目如下:“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社原创 2020-05-12 16:45:44 · 332 阅读 · 0 评论